标准 USB 标识符
为 USB 设备生成的标识符集取决于设备是单接口设备还是多接口设备。
单接口 USB 设备
插入新的 USB 设备时,系统提供的 USB 中心驱动程序通过使用从设备 的设备描述符中提取的信息来构成以下设备 ID:
USB\VID_v(4)&PID_d(4)&REV_r(4)
其中:
- v(4) 是 USB 委员会分配给供应商的供应商代码。
- d(4) 是供应商分配给设备的代码示例。
- r(4) 是修订代码。
中心驱动程序分别从设备描述符的 idVendor、idProduct 和 bcdDevice 字段中提取供应商和产品代码。 这些代码是四位数十六进制数字。
INF 模型部分还可以指定以下硬件 ID:
USB\VID_v(4)&PID_d(4)
以及以下兼容的 ID:
USB\CLASS_c(2)&SUBCLASS_s(2)&PROT_p(2)
USB\CLASS_c(2)&SUBCLASS_s(2)
USB\CLASS_c(2)
其中:
- c(2) 是从设备描述符获取的设备类代码。
- s(2) 是设备子类代码。
- p(2) 是协议代码。
设备描述符的 bDeviceClass、bDeviceSubClass 和 bDeviceProtocol 字段分别确定设备类代码、子类代码和协议代码。 这些代码是两位数的十六进制数字。
多接口 USB 设备
具有多个接口的设备称为 复合 设备。 将新的 USB 复合设备 插入 Windows 计算机时,USB 中心驱动程序会创建物理设备对象(PDO),并通知操作系统更新子设备列表。 Windows 查询中心驱动程序以获取与新 PDO 关联的硬件标识符后,它会搜索相应的 INF 文件以查找标识符的匹配项。 如果找到 USB\COMPOSITE 以外的匹配项,它将加载 INF 文件中指示的驱动程序。 但是,如果未找到其他匹配项,则操作系统将使用兼容的 ID USB\COMPOSITE,它为其加载 USB 通用父驱动程序。 然后,通用父驱动程序会创建一个单独的 PDO,并为复合设备的每个接口生成一组单独的硬件标识符。
每个接口都有以下形式的设备 ID:
USB\VID_v(4)&PID_d(4)&MI_z(2)
其中:
INF 模型部分还可以指定以下兼容的 ID:
USB\CLASS_d(2)&SUBCLASS_s(2)&PROT_p(2)
USB\CLASS_d(2)&SUBCLASS_s(2)
USB\CLASS_d(2)
USB\COMPOSITE
其中:
- d(2) 是从设备描述符获取的设备类代码。
- s(2) 是子类代码。
- p(2) 是协议代码。
接口描述符的 bInterfaceClass、bInterfaceSubClass 和 bInterfaceProtocol 字段分别确定设备类代码、子类代码和协议代码。 这些代码是两位数的十六进制数字。