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