次の方法で共有


事前解析データを取得する

この記事では、ユーザー モード アプリケーションとカーネル モード ドライバーが 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 レポートからコントロール データを抽出できるようになります。