Windows下USB百科
+ -

USB根集线器硬件ID生成机制

2026-05-07 本文链接为:http://www.usbzh.com/article/detail-1650.html ,欢迎转载,转载请附上本文链接。

在 USB 主机控制器架构中,根集线器(Root Hub)作为主机控制器内部集成的虚拟集线器,其硬件标识符(HW ID)的生成机制与主机控制器的 PCI 配置空间直接关联。本文档详细阐述根集线器 VID、PID 及 REV 的来源及其对应的硬件 ID 生成规则。

USB根集线器无兼容IDS(BusQueryCompatibleIDs),并且由于每个USB控制器只能有一个根集线器,所以BusQueryInstanceID永远为0

标识符映射关系

根集线器的关键硬件标识符并非独立存在,而是直接派生自所在主机控制器的 PCI 配置空间寄存器:

根集线器属性 来源 PCI 寄存器
VID(供应商 ID) 主机控制器 VID Vendor ID
PID(产品 ID) 主机控制器 DEV Device ID
REV(修订版本) 主机控制器 REV Revision ID

这种映射关系确保根集线器能够继承主机控制器的硬件特征,从而允许驱动程序或过滤驱动精确识别并绑定到特定类型的根集线器实例。

硬件 ID 生成规则

基于上述映射关系,系统会按照从具体到通用的优先级生成如下三级硬件 ID:

1. 完整 ID(最高优先级)

USB\PORT_ROOT_HUB&VIDnnnn&PIDnnnn&REVnnnn
  • nnnn 为四位十六进制数(例如 VID8086, PID1234, REV0001)
  • 示例:USB\PORT_ROOT_HUB&VID1234&PID5678&REV0001

2. 无修订版 ID(中等优先级)

USB\PORT_ROOT_HUB&VIDnnnn&PIDnnnn
  • 仅匹配供应商和产品,忽略修订版本
  • 示例:USB\PORT_ROOT_HUB&VID1234&PID5678

3. 通用 ID(最低优先级)

USB\PORT_ROOT_HUB
  • 匹配所有根集线器实例

应用场景

此分级 ID 设计主要服务于以下目的:

  • 过滤驱动加载:驱动或过滤驱动可以选择性地绑定到具有特定 VID/PID/REV 的根集线器,实现精细化的设备管理和功能增强。
  • 兼容性支持:优先级较低的通用 ID 作为回退机制,确保即使没有精确匹配的驱动程序,系统也能使用通用 USB 驱动识别根集线器。
  • 调试与诊断:通过读取根集线器的硬件 ID,可以快速推导出底层主机控制器的型号与版本信息。

注意事项

  • 根集线器并非物理独立的 USB 设备,其硬件 ID 在此仅为软件层面的识别标识。
  • 实际生成的 ID 字符串中,PORT_ROOT_HUB 表明该设备在端口拓扑中的特殊地位(根节点)。
  • 该机制适用于 Windows 操作系统中的 USB 驱动程序栈(包括 USB Common Class Generic Parent Driver 及相关总线驱动)。

总结

通过将根集线器的 VID、PID、REV 直接映射到主机控制器的 PCI 配置空间,并按照“完整信息 → 部分信息 → 通用”的层次生成硬件 ID,操作系统在保证根集线器可识别性的同时,也为驱动程序提供了从广泛匹配到精确匹配的灵活加载策略。这种设计既是技术实现上的简洁体现,也为 USB 子系统的可扩展性和维护性奠定了基础。

本文链接为:http://www.usbzh.com/article/detail-1650.html ,欢迎转载,转载请附上本文链接。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936     USB技术交流3:1031974172

0 篇笔记 写笔记

USB设备和USB集线器HUB的数据传输
USB高速集线器与USB根集线器之间只通过USB使用USB高速通讯讯方式,而对于低速或全速的数据通讯的转换是由其挂接的最近的USB-HUB负责完成转换。如下图:对于USB高速设备和USB高速HUB,使用高速通讯。对于连接到高速HUB上的低速或全速USB-HUB,使用低速或全速通讯方式。对于连接到高速......
USB通用父驱动usbccgp.sys的过滤UVC摄像头、UAC麦克风和HID设备硬件ID
激动的心情,无溢言表。。虽然只是一个很简单的东西。。但相于折腾了这么久,还是很开心的了。最近有个需求,功能是这样的:有一个USB复合设备,连接到windows系统中它在windows下的设备树如下:USB Composite Device(usbccgp.sys)UVC CameraUAC ......
USB 集线器HUB
通过USB集线器,可以很简单的实现主机扩展USB设备的数量。在USB协议规范中,USB集线器作为了一种特殊的设备在存在,USB规范专门为其定义了一种设备类。基本定位USB 集线器:将1 个上行口扩展为多个下行口,工作在物理层,仅做信号转发,非交换机/路由器。USB3 集线器 = 盒内集成USB2......
USB主机端控制器集线器与USB设备类型分类
USB根据设备功能及类型,可以分USB主机端,USB设备端。USB主机端-USB hostUSB主机端也叫USB控制器,包括两大部分,分别为与系统总线进行数据交互的USB控制器和USB总线的根集线器。一个USB主机端就是一个独立的USB总线,其按USB版本可分为OHCI,UHCI,EHCI,xHC......
USB设备与集线器最大可以级联多少层
在USB2.0规范中,定义了USB设备与集线器最大可以级联7层(包括根集线器),即根集线器之设备之间最多有5个继集线器。注意:有一个USB复合(compound)设备,其本身是一个USB集线器并接连1个或多个USB功能设备,这里需要将这个USB集线器算在内。......
HID复合设备(键盘、鼠标)的实现
在使用一些USB键盘或鼠标的时候,特别是一些电竟高档HID设备时,经常发现这些设备会额外定义一些特别的快捷键,使得这些设备不仅有基础设备(如键盘,鼠标)的功能,也有一些特别的快捷功能(如系统声音的放大放小)。甚至更有一些复杂的设备,只需要一个USB接口,就同时支持鼠标键盘功能或在键盘的额外区域支持触......
Windows驱动硬件ID生成
Windows驱动硬件ID生成的测试代码这里只是对代码进行收藏,方便以后要用的时候直接复制来用Index = swprintf(Buffer, L"USB\Class_%02x&SubClass_%02x&Prot_%02x", DeviceDescript......
USB集线器HUB的枚举过程及集线器状态
USB集线器和其他USB设备一样,都需要在上电时进行配置。在USB协议中,使用默认的端0点。进行上电初期的通信。USB集线器除了配置其自身外,还需要对下行端口连接的其他USB设备进行识别。USB集线器HUB枚举过程USB集线器的上电配置过程如下:USB集线器连接到USB主机的根集线器上。USB......
USBCCGP 复合设备接口设备ID
复合 USB 设备上的接口可分组到集合中或分别代表一个 USB 函数。如果接口未分组在集合中,则通用父驱动程序会为每个接口创建一个 PDO,并为每个 PDO 生成一组硬件 Id。USB设备ID接口 PDO 的设备 ID具有以下格式:USBVID_v(4)&PID_p(4)&MI......
USB HUB集线器芯片选型
型号TT模式过流检测工作温度封装 CH334GSTT--40~85℃SOP16 CH334RMTT--40~85℃QSOP16 CH334U/FMTTGANG模式-40~85℃QSOP28/QFN24_4x4 CH334S/Q......
USBIP虚拟控制器和根集线器HUB的设备信息分析
USBIP是一套可以实现USB远程设备的本机映射,这样就像在本地操作目标USB设备一样。其原理是在本地端通过安装一个虚拟的USB根控制器,根集线器,同时虚拟出4个USB端口,当远程USB设备连接到远程机器时,可以把远程设备的USB信息通过网络传输到本地,在本地的虚拟USB端口虚拟一个相同的设备,这样......
USBIP 设备树层次分析
通过前面知道,usbip_vhci工程实现的是pnp管理器虚拟出来的PDO的FDO,但同样也是这个FDO创建的PDO虚拟根USB控制器和其子设备HUB的驱动程序。USBIP设备硬件ID名称sys文件inf文件硬件IDusbip-win VHIC Rootusbip_vhic......
USBIP 集线器PDO(VDEV_HPDO)的初始化过程
USB集线器其实也是USB设备的一类,其设备分类分类为0x09。和USBIP虚拟的控制器(VDEV_CPDO)类似,USB控制器创建了其PDO之后,会通过IRP_MN_QUERY_DEVICE_RELATIONS返回USB集线器HUB的PDO设备列表。PNP管理器收到有新的设备之后,会开始收集这个P......
USBIP 虚拟集线器FDO子设备的管理
IRP_MN_QUERY_DEVICE_RELATIONS这得从IRP_MN_QUERY_DEVICE_RELATIONS来谈起,好像有点看的不是很明白。先把上一节的代码复制过来,看一下:static PAGEABLE NTSTATUSget_bus_relations_vhub(pvhub_d......
USBIP 虚拟集线器FDO(VDEV_VHUB )的初始化
AddDevice执行vhci_add_device,返回的设备类型为VDEV_VHUB,集线器HUB的FDO类型。然后初始化HUB的FDO,使用init_dev_vhub(vdev);函数实现static PAGEABLE voidinit_dev_vhub(pvdev_t vdev){ ......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • USB资源
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!