获取预先分析的数据
本文介绍用户模式应用程序和内核模式驱动程序如何获取 HID 集合的 预分析数据,这是描述集合 HID 报告的不透明结构。
用户模式应用程序
用户模式应用程序必须在调用需要预分析数据的任何 HIDClass 支持例程 之前获取集合的预分析数据。 只要应用程序在设备上具有打开的文件,应用程序就应保留对集合的预分析数据的访问权限。
在 HID 集合上打开文件后,应用程序调用 HidD_GetPreparsedData 以在例程分配的缓冲区中返回集合的预分析数据。
当应用程序不再需要访问集合时,应用程序应调用 HidD_FreePreparsedData 。
内核模式驱动程序
内核模式驱动程序打开 HID 集合后,驱动程序会通过以下方式获取集合的 预分析数据 :
获取集合的预分析数据的长度
获取集合的预分析数据
若要确定预分析数据的长度,驱动程序使用 IOCTL_HID_GET_COLLECTION_INFORMATION 请求。 此请求返回HID_COLLECTION_INFORMATION结构。 此结构的描述符Size 成员指定集合的预分析数据的大小(以字节为单位)。 驱动程序必须从大小至少为非分页池分配缓冲区,才能保存预先分析的数据。
为预分析的数据分配缓冲区后,驱动程序使用 IOCTL_HID_GET_COLLECTION_DESCRIPTOR 请求来获取预分析的数据。
获取预先分析的数据后,驱动程序可以将它与 **HidP_**Xxx HID 支持例程一起使用,以获取有关 HID 集合功能的信息,以及从 HID 报表中提取控制数据。