枚举 USB 复合设备

枚举 USB 复合设备

当新的 USB 设备连接到主机时,USB 总线驱动程序将为该设备创建一个物理设备对象 (PDO),并生成一个 PnP 事件报告此新 PDO。然后,操作系统将查询总线驱动程序,以获取与该 PDO 关联的硬件 ID。

对于所有 USB 设备,USB 总线驱动程序将采用以下格式报告设备 ID

USB\VID_xxxx&PID_yyyy

注意   xxxxyyyy 分别直接从设备描述符的 idVendoridProduct 获取。

如果设备满足下列要求,则总线驱动程序还会报告 USB\COMPOSITE 的兼容标识符:

  • 设备描述符的设备类字段 (bDeviceClass) 必须包含一个零值,或者设备描述符的类 (bDeviceClass)、子类 (bDeviceSubClass) 和协议 (bDeviceProtocol) 字段必须分别具有值 0xEF、0x02 和 0x01,如 USB 接口关联描述符中所述。

  • 设备必须具有多个接口。

  • 设备必须具有一个配置。

总线驱动程序还会检查设备描述符的设备类 (bDeviceClass)、子类 (bDeviceSubClass) 和协议 (bDeviceProtocol) 字段。如果这些字段均为零,则说明该设备为复合设备,总线驱动程序将为 PDO 报告一个额外的 USB\COMPOSITE 兼容标识符 (ID)。

为新 PDO 检索硬件 ID 和兼容 ID 后,操作系统将搜索 INF 文件。如果其中一个 INF 文件包含设备 ID 的匹配信息,则 Windows 将加载该 INF 文件指示的驱动程序,通用父驱动程序不会起作用。如果没有 INF 文件包含该设备 ID,但 PDO 具有兼容 ID,则 Windows 将搜索兼容 ID。这会在 Usb.inf 中生成匹配,并导致操作系统加载 USB 通用父驱动程序 (Usbccgp.sys)

如果希望通用父驱动程序管理你的设备,但设备没有确保系统生成 USB\COMPOSITE 所需的特性,则你必须提供一个加载通用父驱动程序的 INF 文件。该 INF 文件应包含引用 Usb.inf 的 needs/includes 部分。

如果复合设备有多个配置,则你提供的 INF 文件必须指定通用父驱动程序应在注册表中使用的配置。配置 Usbccgp.sys 来选择非默认 USB 配置中对所需的注册表项进行了介绍。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值