共用方式為


取得預先剖析的數據

本文說明使用者模式應用程式和內核模式驅動程式如何取得 HID 集合的 預先剖析數據,這是描述集合 HID 報表的不透明結構。

使用者模式應用程式

使用者模式應用程式必須先取得集合的預先剖析數據,才能呼叫 任何需要預先剖析數據的 HIDClass 支援例程 。 只要應用程式在裝置上有開啟的檔案,應用程式就應該保留對集合預先剖析數據的存取權。

在 HID 集合上開啟檔案之後,應用程式會呼叫 HidD_GetPreparsedData ,以在例程配置的緩衝區中傳回集合的預先剖析數據。

當應用程式不再需要存取集合時,應用程式應該呼叫 HidD_FreePreparsedData

內核模式驅動程式

在內核模式驅動程式開啟 HID 集合之後,驅動程式會以下列方式取得集合的 預先剖析數據

  • 取得集合預先剖析數據的長度

  • 取得集合預先剖析的數據

若要判斷預先剖析數據的長度,驅動程式會使用 IOCTL_HID_GET_COLLECTION_INFORMATION 要求。 此要求會傳 回HID_COLLECTION_INFORMATION 結構。 這個 結構的 DescriptorSize 成員會指定集合預先剖析數據的大小,以位元組為單位。 驅動程式必須從至少這個大小的非分頁集區配置緩衝區,以保存預先剖析的數據。

配置預先剖析數據的緩衝區之後,驅動程式會使用 IOCTL_HID_GET_COLLECTION_DESCRIPTOR 要求來取得預先分析的數據。

取得預先剖析的數據之後,驅動程式就可以將它與 **HidP_**Xxx HID 支援例程搭配使用,以取得 HID 集合功能的相關信息,以及從 HID 報表擷取控制數據。