标准 USB 标识符
为 USB 设备生成的标识符集取决于设备是单接口设备还是多接口设备。
Single-Interface USB 设备
插入新的 USB 设备时,系统提供的 USB 集线器驱动程序使用从设备的设备 描述符中提取的信息组成以下设备 ID:
USB\VID_v (4) &PID_d (4) &REV_r (4)
其中:
v (4) 是 USB 委员会分配给供应商的供应商代码。
d (4) 是供应商分配给设备的产品代码。
r (4) 是修订代码。
中心驱动程序分别从设备描述符的 idVendor、idProduct 和 bcdDevice 字段中提取供应商和产品代码。 这些是 4 位十六进制数。
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) 是从设备 描述符中提取的设备类代码。
(2) 是设备子类代码。
p (2) 是协议代码。
设备类代码、子类代码和协议代码分别由设备描述符的 bDeviceClass、bDeviceSubClass 和 bDeviceProtocol 字段确定。 这些是 2 位十六进制数字。
Multiple-Interface USB 设备
具有多个接口的设备称为 复合 设备。 从 Windows 2000 开始,当新的 USB 复合设备 插入计算机时,USB 集线器驱动程序 (PDO) 创建物理设备对象,并通知操作系统其子设备集已更改。 在中心驱动程序中查询与新 PDO 关联的硬件标识符后,操作系统将搜索相应的 INF 文件以查找标识符的匹配项。 如果找到 USB\COMPOSITE 以外的匹配项,它将加载 INF 文件中指示的驱动程序。 但是,如果未找到其他匹配项,操作系统将使用兼容的 ID USB\COMPOSITE,它将为其加载 USB 通用父驱动程序。 然后,泛型父级驱动程序创建一个单独的 PDO,并为复合设备的每个接口生成一组单独的硬件标识符。
每个接口都有以下形式的设备 ID:
USB\VID_v (4) &PID_d (4) &MI_z (2)
其中:
v (4) 是 USB 委员会分配给供应商的供应商代码。
d (4) 是供应商分配给设备的产品代码。
z (2) 是从相应接口描述符的 bInterfaceNumber 字段中提取的接口号。
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 字段确定。 这些是 2 位十六进制数字。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈