USBIP 设备树层次分析
2022-02-23
743
0
通过前面知道,usbip_vhci工程实现的是pnp管理器虚拟出来的PDO的FDO,但同样也是这个FDO创建的PDO虚拟根USB控制器和其子设备HUB的驱动程序。
USBIP设备硬件ID
名称 | sys文件 | inf文件 | 硬件ID |
---|---|---|---|
usbip-win VHIC Root | usbip_vhic.sys | usbip_root.inf | USBIPWIN\root |
usbip-win VHCI | usbip_vhic.sys | usbip_vhci.inf(oem115.inf) | USBIPWIN\vhci |
usbip-win VHUB | usbip_vhic.sys | usbip_vhci.inf(oem115.inf) | USB\ROOT_HUB&VID1209&PID8250&REV0000 |
usbip-win VHCI ROOT
从设备管理器中可以看到,usbip-win VHCI ROOT其实是pnp管理器虚拟的PDO,我们通过usbip_root.inf文件对其安装驱动,并创建FDO,所以该设备的硬件ID为INF文件中的“usbip_root”。
usbip-win VHCI
这是我们的驱动创建的第一层PDO,不过使用usbip_vhci.inf文件安装驱动,驱动SYS文件合并到了usbip_vhci.sys中了。
该设备的硬件ID为 USBIPWIN\vhci
usbip-win VHUB
这个是根集线器,每个USB控制器都会产生一个根集线器的,根集线器必般是USB类的,所在硬件ID也必须满足USB类的规范。
其硬件ID为SB\VID_1209&PID_8250&REV_0000。
USBIP驱动设备栈
typedef enum {
VDEV_ROOT, //虚拟根设备FDO
VDEV_CPDO, //USB控制器PDO CONTROL PDO
VDEV_VHCI, //虚拟USB控制器FDO
VDEV_HPDO, //HUB PDO
VDEV_VHUB, //虚拟HUB FDO
VDEV_VPDO //虚拟设备PDO
} vdev_type_t;
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936