USB根集线器的初始化
2026-05-08
本文链接为:http://www.usbzh.com/article/detail-1655.html ,欢迎转载,转载请附上本文链接。
Windows驱动中,设备的初始化或者启动是由IRP_MN_START_DEVICE的回调实现的。
USB根集线器的初始化过程如下:
1.获取根集线器设备描述符USBH_GetDeviceDescriptor
2.获取根集线器配置描述符USBH_GetConfigurationDescriptor
3.获取根集线器集线器描述符USBH_SyncGetHubDescriptor
获取USB集线器扩展信息USB_HUB_INFORMATION
4.USB供电检查,通过下发GetStatus结果判断 GetStatus- GetHubStatus
- 如果是是自供电,则该USB总线的最大电流为500mA,每个端口限制为100mA
- 如果是自供电,则不受 USB 总线电流限制,以为每个端口提供完整的 500mA 电流
#define USB_GETSTATUS_SELF_POWERED 0x01 #define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
5.对配置描述符解析,选择配置SetConfiguration
6.对根集线器下游各个端口上电SetPortFeature-SetFeature(PORT_POWER)
7.对集线器下游每个端口ClearFature(FEATURE_C_PORT_CONNECT)
参考:
- USB集线器枚举过程抓包示例 https://www.usbzh.com/article/detail-1642.html
- USB Hub 枚举与初始化完整流程 https://www.usbzh.com/article/detail-1613.html
USBHUB2.0驱动实现





