标准 USB 标识符

为 USB 设备生成的标识符集取决于设备是单接口设备还是多接口设备。

Single-Interface USB 设备

插入新的 USB 设备时,系统提供的 USB 集线器驱动程序使用从设备的设备 描述符中提取的信息组成以下设备 ID:

USB\VID_v (4) &PID_d (4) &REV_r (4)

其中:

中心驱动程序分别从设备描述符idVendoridProductbcdDevice 字段中提取供应商和产品代码。 这些是 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)

其中:

设备类代码、子类代码和协议代码分别由设备描述符bDeviceClassbDeviceSubClassbDeviceProtocol 字段确定。 这些是 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)

其中:

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) 是协议代码。

设备类代码、子类代码和协议代码分别由接口描述符bInterfaceClassbInterfaceSubClassbInterfaceProtocol 字段确定。 这些是 2 位十六进制数字。