HID 类驱动程序枚举设备的顶级集合,并为每个顶级集合创建物理设备对象(PDO)。
用户模式应用程序或内核模式驱动程序可以通过打开其 PDO 并使用 HIDClass 支持例程
和 HID 类驱动程序 IOCTL 来访问顶级集合。
HID class 支持函数:设备发现和设备信息获取,数据移动,hid控件分析。
顶级集合是一组面向特定软件使用者(或使用者类型)的功能分组。
顶级集合的内部结构和功能:
HIDP_CAPS结构汇总了顶级集合的功能:
链接集合 描述顶级集合中包含的嵌套集合的组织。
按钮功能数组 和 值功能数组 描述顶级集合支持的控件的功能。
报表描述符定义一个或多个 顶级集合。
与每个集合关联的报表项定义一个或多个 HID 报表。
预先分析的数据(PreparsedData) 是与 顶级集合关联的报表描述符数据。用于获取 集合的信息。
集合信息:
集合功能。
按钮功能数组 和 值功能数组,描述集合支持的控件的功能。
链接集合数组,描述其 链接集合的内部组织。
特定控件使用情况由其使用情况页(usagepage)、 使用情况 ID、名称说明和定义(条目)。 使用情况页值是 16 位无符号值。
控件实例包含两种:按钮和值
HID 客户端驱动程序:
如果驱动程序是功能或筛选器驱动程序,则它已附加到集合的设备堆栈。
如果驱动程序不是功能驱动程序或筛选器驱动程序,则可以使用即插即用通知来查找 HID 集合。
系统提供的 HID 微型驱动程序不支持设备的端口或总线,则需要供应商提供微型驱动程序。
application -->vendor (specific deivce) driver stack-->hid 客户端驱动程序-->hid类驱动程序-->传输微型驱动程序(HID mini driver)--> port or bus driver stack
HID 设备生成驱动程序堆栈:
pnp管理器-->传输驱动pdo(winusb)-->传输微型驱动程序(HID mini driver)-->hid类驱动程序-->HID顶级集合PDO-->供应商提供的功能或筛选器驱动程序为顶级集合创建 FDO 或筛选器 DO