当新的 USB 设备连接到主机时,USB 总线驱动程序将为设备创建物理设备对象(PDO),并生成 PnP 事件来报告新的 PDO。 操作系统然后查询总线驱动程序以获取与PDO关联的硬件ID。
对于所有 USB 设备,USB 总线驱动程序报告的设备 ID 采用以下格式:
USB\VID_xxxx&PID_yyyy
xxxx 和 yyy 值分别取自设备描述符的 idVendor 和 idProduct 字段。
如果设备满足以下要求,则总线驱动程序还会报告兼容的标识符(ID USB\COMPOSITE):
- 设备描述符(bDeviceClass)的设备类字段必须包含一个值为零,或者设备描述符的类(bDeviceClass)、子类(bDeviceSubClass)和协议(bDeviceProtocol)字段必须分别具有值0xEF、0x02和0x01,如 USB 接口关联描述符中所述。 
- 设备必须具有多个接口。 
- 设备必须仅有单一配置。 
总线驱动程序还会检查设备描述符的设备类(bDeviceClass)、子类(bDeviceSubClass)和协议(bDeviceProtocol)字段。 如果这些字段为零,则该设备被识别为复合设备,总线驱动程序为 PDO 报告一个额外的兼容标识符(ID):USB\COMPOSITE。
在总线驱动程序检索新 PDO 的硬件和兼容 ID 后,操作系统将搜索 INF 文件。 如果某个 INF 文件包含设备 ID 的匹配项,Windows 将加载该驱动程序,而通用父驱动程序则不会被使用。 如果没有 INF 文件包含设备 ID,并且 PDO 具有兼容的 ID,Windows 将搜索兼容的 ID。 此搜索在 Usb.inf 中生成匹配项,并导致作系统加载 USB 通用父驱动程序(Usbccgp.sys)。
如果您的设备不具备生成 USB\COMPOSITE 兼容 ID 的特征,则必须提供一个加载通用父驱动程序的 INF 文件。 INF 文件应该包含一个需要/包含节,该节引用了 Usb.inf 文件。
如果复合设备具有多个配置,则提供的 INF 文件必须指定通用父级应在注册表中使用的配置。 配置 Usbccgp.sys 以选择非默认 USB 配置中介绍了必要的注册表项。