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
Windows下USB百科





