次の方法で共有


HID Over SPI のプラグ アンド プレイ サポート

この記事では、SPI トランスポート経由で HID をサポートするデバイスのプラグ アンド プレイのサポートについて説明します。

ドライバーの読み込み

Windows は、ハードウェア ID と INF 間の互換性 ID の一致に基づいて HID SPI クラス ドライバーを読み込みます。 この ID は、Advanced Configuration and Power Interface (ACPI) によって生成されます。 ハードウェア ID は、ACPI の SPI デバイス ノードに対して生成されます。 すべての HID SPI 互換デバイスは、一意のハードウェア ID に加えて、互換性 ID を公開する必要があります。

ACPI 5.0 仕様には、HID クラス デバイスのサポートが含まれています。 HID SPI の ACPI 定義は次のとおりです。

フィールド ACPI オブジェクト 形式 Comments
ハードウェアID ベンダー固有 _HID VVVVddddd 形式の文字列 (例: MSFT0011) VendorID + DeviceID
互換性 ID PNP0C51 _CID ACPIxxxx または PNPxxxx 形式の文字列 CompatibleID
[サブシステム] ベンダー固有 _SUB VVVVssss 形式の文字列 (例: MSFQ1234) SubVendorID + SubSystemID
ハードウェアのリビジョン ベンダー固有 _HRV 0xRRRR (2 バイト リビジョン) ハードウェア リビジョン番号
現在のリソース設定 ベンダー固有 _CRS バイト ストリーム - デバイスにアクセスするための SpiSerialBus。
- 割り込みの場合は GpioInt。
デバイス固有の方法 GUID {6e2ac436-0fcf-41af-a265-b32a220dcfab} _DSM Package デバイス固有の情報を含む構造体を定義します。
デバイスのリセット方法   _RST   ACPI 6.0 7.3.25 準拠のデバイス リセット方法。ホスト OS によって ACPI FLDR として呼び出されます。

HID SPI デバイスごとに、次の必須フィールドを指定する必要があります。

  • ハードウェアID
  • 互換性 ID
  • ハードウェアのリビジョン
  • 現在のリソース設定
  • デバイス固有の方法
  • デバイスのリセット方法

詳細については、「Advanced Configuration and Power Interface (ACPI) 6.0 仕様」を参照してください。

ランダム HID SPI デバイスのハードウェア ID と互換性 ID の例を次に示します。 これらの詳細は、"ベンダー固有" クラスの 1 つの最上位コレクションを持つ HID として自身を報告するサンプル デバイスに基づいています。

Advanced Configuration and Power Interface (ACPI) では、HID SPI トランスポート ドライバーを読み込むために、次のハードウェア ID と互換性 ID が生成されます。

ハードウェア ID: 互換性 ID

ACPI\Vid_xxxx&Pid_yyyy&Rev_zzzz;: ACPI\PNP0C51

ACPI\Vid_xxxxPid_yyyy;:

ACPI\xxxxyyyy;:

前の例では、サンプル デバイスの _HID ACPI メソッドから抽出された値を使用してハードウェア ID が生成されました。 互換性 ID は、サンプル デバイスの _CID ACPI メソッドから抽出された値を使用して生成されます。 HID over SPI の互換性 ID は、バージョン 1.0 では常に PNP0C51 にする必要があります。

Note

INF を指定する場合は、前の表の左側の列にあるハードウェア ID のみを使用する必要があります (右側の列の互換性 ID を使用しないでください)。

HIDClass.sys コンポーネントによって生成される HID クライアント デバイス ノードのハードウェア ID は次のとおりです。

ハードウェア ID: 互換性 ID

HID\VEN_MSFT&DEV_0010&REV_0002&Col01;: N/A

-HID\VEN_MSFT&DEV_0010&Col01 HID\MSFT0010&Col01;: N/A

-HID\*MSFT0010Col01: N/A

-HID_DEVICE_UP:FF00_U:0001;: N/A

-HID_DEVICE: N/A

ハードウェア ID は HIDClass.sys によって生成され、すべてのトランスポートで同じです。 この ID は、HIDSPI.SYS (ACPI から抽出) から HIDClass.sys に渡される値に基づいています。

デバイス列挙シーケンス

HID SPI デバイス ドライバー (HIDSPI.SYS) が読み込まれると、SPI バス経由でデバイスとの通信が開始されます。 ドライバーが実行する最初の操作は、デバイス列挙シーケンスです。

列挙シーケンスを次の一覧に示します。 この一覧の順序は、今後のバージョンの Windows で変更される可能性があります。

  1. システム BIOS から HID SPI デバイスの ACPI ソース言語 (ASL) コードを取得します。

  2. ホストによって開始されたリセットをデバイスに発行します。

    • ACPI _RST メソッドを呼び出します
    • デバイスが GPIO 割り込みをアサートします
    • ホストがデバイスからリセット応答を読み取ります
  3. デバイスから HID 記述子を取得します

    • ホストが HID 記述子要求を書き込みます
    • デバイスが GPIO 割り込みをアサートします
    • ホストが HID 記述子応答を読み取ります
  4. レポート記述子を取得します。

    • ホストがレポート記述子要求を書き込みます
    • デバイスが GPIO 割り込みをアサートします
    • ホストがレポート記述子応答を読み取ります

ホストがデバイスでいずれかの手順を正常に完了できない場合、HIDSPI ドライバーがコード 10 のエラー値で読み込まれる可能性があります。 応答が受信されない場合、ホストはデバイスのリセットを再試行できますが、再試行ロジックは保証されません。

HID レポート操作

次の表は、HID SPI プロトコルでサポートされる HID レポート操作と、操作の実行に使用される入出力レポートの概要を示しています。

HID レポートの種類 操作 出力レポートの種類 入力レポートの種類
入力レポート GET 0x06
(要求 - 空のコンテンツ)
0x0B
(応答)
入力レポート SET
(サポートされていません)
該当なし 該当なし
入力レポート INTERRUPT IN N/A - 要求なし 0x01
機能レポート GET 0x04
(要求 - 空のコンテンツ)
0x05
(応答)
機能レポート SET 0x03 0x09
(受信確認 - 空のコンテンツ)
出力レポート GET
(サポートされていません)
該当なし 該当なし
出力レポート SET 0x05 0x0A
(受信確認 - 空のコンテンツ)

プロトコル操作

操作 要求レポートの種類 応答レポートの種類
デバイス記述子要求 0x01 0x7
レポート記述子要求 0x02 0x8
コマンド要求 0x07 0x4
応答のリセット 該当なし 0x3

関連項目

ACPI ソース言語 (ASL)