HID ボタン ドライバー
GPIO ボタンには Microsoft が提供するボタン ドライバーを使用します。それ以外の場合は、オペレーティング システムに HID データを挿入するドライバーを実装します。
通常、ボタン (電源、Windows、音量、回転ロック) は、コンバーチブル PC やスレートなどのフォーム ファクターで、ユーザーが物理キーボードを使用できないときに発生するタスクに使用されます。 ボタンは、HID ボタン レポート記述子を指定して、オペレーティング システムに HID デバイスとして宣言します。 これにより、システムはそれらのボタンの目的とイベントを標準化された方法で解釈できます。 ボタンの状態が変更されると、そのイベントは HID 使用法にマッピングされます。 HID トランスポート ミニドライバーは、これらのイベントを上位のドライバーに報告し、上位のドライバーはユーザー モードまたはカーネル モードで HID クライアントに詳細を送信します。
物理的な汎用入出力 (GPIO) ボタンの場合、HID トランスポート ミニドライバーは、定義された GPIO ハードウェア リソースで受信された割り込みに基づいてイベントを報告する、Microsoft が提供するインボックス ドライバーです。
インボックス ドライバーは、割り込みラインに接続されていないボタンを処理できません。 このようなボタンの場合は、ボタンを HID ボタンとして公開し、HID クラス ドライバー (Microsoft 提供) に状態の変更を報告するドライバーを記述する必要があります。 ドライバーは、HID ソース ドライバーまたは HID トランスポート ドライバーの場合があります。
HID ボタンをサポートするためのガイダンス
HID ボタンを作成する場合に、どの実装に従うべきかを決定するのに役立つ一般的なガイドを次に示します。
Microsoft が提供するインボックス ボタン ドライバーを使用する
GPIO ボタンを実装する場合は、オペレーティング システムにイベントを報告するボタン ドライバーとして、Windows が Hidinterrupt.sys インボックス ドライバーを読み込むことができるように、システム ACPI のボタンについて説明します。
Microsoft では、可能な限り、インボックス トランスポート ミニドライバーを使用することをお勧めします。
カーネル モードで HID ソース ドライバーを記述する
別のソフトウェア コンポーネントによって挿入する必要がある HID 形式のデータ ストリームなどの GPIO 以外のボタンを実装する場合は、カーネル モード ドライバーを記述することを選択できます。 Windows 10 以降では、仮想 HID フレームワーク (VHF) と通信し、HID クラス ドライバーとの間で HID レポートの取得と設定を行うプログラミング インターフェイスを呼び出すことによって、HID ソース ドライバーを記述できます。
または、以前のバージョンの Windows でサポートされているカーネル モード HID トランスポート ミニドライバーを記述することもできます。 ただし、KMDF HID トランスポート ミニドライバーの記述が不適切な場合、システムがクラッシュする可能性があるため、この方法はお勧めしません。
UMDF HID ミニドライバーを記述する
GPIO 以外のボタンを実装する場合は、HID ソース ドライバーを記述する前述のモデルを使用する代わりに、ユーザー モードで HID トランスポート ミニドライバーを記述できます。 これらのドライバーはカーネル モード ドライバーよりも開発が簡単で、このドライバーにエラーがあっても、システム全体にバグ チェックが発生することはありません。
HID ボタン用ユニバーサル Windows ドライバー
Windows 10 以降、HID ドライバー プログラミング インターフェイスは、Windows の OneCoreUAP ベースのエディションの一部となっています。 その一般的なインターフェイス セットを使用すると、仮想 HID フレームワークまたはトランスポート ミニドライバー インターフェイスを使用してボタン ドライバーを記述できます。 これらのドライバーは、Windows 10 デスクトップ エディション (Home、Pro、Enterprise、Education) と Windows 10 Mobile の両方だけでなく、その他の Windows 10 バージョンでも動作します。
詳細なガイダンスについては、「 ユニバーサル INF ファイルの使用を参照してください。