获取预先分析的数据
本部分介绍用户模式应用程序和内核模式驱动程序如何获取 HID 集合的 预分析数据,这是描述集合 HID 报表的不透明结构。
User-Mode 应用程序
用户模式应用程序在调用需要预分析数据的任何 HIDClass 支持例程 之前,必须获取集合的预分析数据。 只要应用程序在设备上具有打开的文件,应用程序就应保留对集合的预分析数据的访问权限。
在 HID 集合上打开文件后,应用程序调用 HidD_GetPreparsedData 以在例程分配的缓冲区中返回集合的预分析数据。
当应用程序不再需要访问集合时,应用程序应调用 HidD_FreePreparsedData 。
Kernel-Mode 驱动程序
内核模式驱动程序打开 HID 集合后,驱动程序将按以下方式获取集合的 预分析数据 :
获取集合的预分析数据的长度
获取集合的预分析数据
为了确定预分析数据的长度,驱动程序使用 IOCTL_HID_GET_COLLECTION_INFORMATION 请求。 此请求返回 HID_COLLECTION_INFORMATION 结构。 此结构的 DescriptorSize 成员指定集合的预分析数据的大小(以字节为单位)。 驱动程序必须分配至少具有此大小的非分页池的缓冲区,以保存预分析的数据。
为预分析数据分配缓冲区后,驱动程序使用 IOCTL_HID_GET_COLLECTION_DESCRIPTOR 请求获取已准备的数据。
获取预先分析的数据后,驱动程序可以将其与 **HidP_**Xxx HID 支持例程一起使用,以获取有关 HID 集合功能的信息,并从 HID 报表中提取控制数据。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈