HID over USB デバイスのセレクティブ サスペンド
ユニバーサル シリアル バス仕様のリビジョン 2.0 では、USB のセレクティブ サスペンド機能が指定されています。 この機能を使用すると、Windows オペレーティング システムはアイドル状態の USB デバイスを選択的に中断できます。 これにより、Windows はシステム全体の電源要件を効率的に管理できます。 Windows が USB のセレクティブ サスペンド機能をサポートする方法の詳細については、「USB セレクティブ サスペンド」を参照してください。 (このリソースは、一部の言語や国では利用できない場合があります。)
既定では、一貫性のあるユーザー エクスペリエンスを提供し、セレクティブ サスペンドからの再開待機時間を回避するために、Windows によって USB のセレクティブ サスペンドが無効になります。
セレクティブ サスペンドをサポートする HID デバイスは、次のように設計する必要があります。
- セレクティブ サスペンドから再開するときに、最初の入力、タッチ、移動、またはキーの押下を保持する。
- 移動時にセレクティブ サスペンドから復帰する。
- ワイヤレス リンクを維持する (該当する場合)。
- NUM ロックや CAPS ロックなど、アクティブな状態 LED の電源を維持する。
- ユーザーが遅延を認識することなく、セレクティブ サスペンドから再開する。
Windows 8 では、HID USB デバイスのセレクティブ サスペンドを有効にする 2 つの方法がサポートされています。 手順は次のとおりです:
- Microsoft OS 記述子 [推奨]: Microsoft OS 記述子の拡張プロパティ記述子を使用して、USB HID のセレクティブ サスペンドをサポートするために必要なレジストリ キーを書き込むことができます。
- ベンダーが提供する INF: ハードウェアの製造元は、適切なレジストリ キーをインストールする INF ファイル (HID 開発ノードの USB ハードウェア ID に一致) を提供できます。
Microsoft では、ハードウェア ベンダーと PC 製造元が、USB HID のセレクティブ サスペンドを有効にする最初のオプションを使用することをお勧めします。 このオプションの利点は次のとおりです。
- ハードウェア ベンダーと PC の製造元は、追加の INF ファイルをインストールする必要はありません。
- 必要なレジストリ設定は、新しいWindows 8 のインストール時に自動的に設定されます。
- 必要なレジストリ設定は、Windows 8 へのアップグレード時に保持されます。
- ユーザーは、INF をアンインストールしてもセレクティブ サスペンド機能を失うこと (または無効になること) はありません。
ただし、INF のアプローチを引き続き使用するハードウェア ベンダーと PC の製造元は、次の例を使用できます。 Windows で HID デバイスに対してこの USB 機能を有効にする方法を示す INF ファイルの例を次に示します。
; Vendor INF File for USB HID devices
;
; A sample INF for a stand-alone USB HID device that supports
; selective suspend
[Version]
Signature ="$WINDOWS NT$"
Class =HIDClass
ClassGuid ={745a17a0-74d3-11d0-b6fe-00a0c90f57da}
Provider =%VendorName%
DriverVer =09/19/2008,6.0.0.0
CatalogFile =VendorXYZ.cat
PnpLockdown =1
; ================= Class section =====================
[ControlFlags]
ExcludeFromSelect=*
[SourceDisksNames]
1 = %DiskName%,,,""
;*****************************************
; Install Section
;*****************************************
[Manufacturer]
%VendorName% = VendorXYZDevice,NTx86,NTamd64,NTarm
[VendorXYZDevice.NTx86]
%VendorXYZ.DeviceDesc% = VendorXYZDevice_Install, USB\VID_045E&PID_00B4
[VendorXYZDevice.NTamd64]
%VendorXYZ.DeviceDesc% = VendorXYZDevice_Install, USB\VID_045E&PID_00B4
[VendorXYZDevice.NTarm]
%VendorXYZ.DeviceDesc% = VendorXYZDevice_Install, USB\VID_045E&PID_00B4
[VendorXYZDevice_Install.NT]
include = input.inf
needs = HID_SelSus_Inst.NT
[VendorXYZDevice_Install.NT.HW]
include = input.inf
needs = HID_SelSus_Inst.NT.HW
[VendorXYZDevice_Install.NT.Services]
include = input.inf
needs = HID_SelSus_Inst.NT.Services
[Strings]
VendorName = "Vendor XYZ"
DiskName = "Vendor XYZ Installation Disk"
VendorXYZ.DeviceDesc = "VendorXYZ Device"
ここで:
INF の [Version] セクションの CLASSGUID ディレクティブと DriverVer ディレクティブは、次のように設定されている必要があります。
CLASSGUID ディレクティブは、HID デバイスの Microsoft クラス GUID を指定する必要があります。 この GUID の値は {745a17a0-74d3-11d0-b6fe-00a0c90f57da} です。
DriverVer ディレクティブには、Input.inf の DriverVer ディレクティブで指定されている値より新しい日付とバージョン番号を持つ値が必要です。
VendorXYZDevice* セクションでは、ベンダーの HID デバイスのハードウェア識別子 (ID) を指定します。 ハードウェア ID は、ベンダー識別子 (VID) と製品識別子 (PID) で構成されます。 デバイスの各ハードウェア ID には、ベンダーとデバイスに固有の VID/PID 値が必要です。 これにより、同じハードウェア ID が複数の名前と設定に対応しないことが保証されます。
VendorXYZDevice_Install.NT セクションと VendorXYZDevice_Install.NT.HW セクションは、INF DDInstall セクションです。 この例では、これらのセクションには INF Include ディレクティブと Needs ディレクティブが含まれています。
Include ディレクティブは、ベンダーの HID デバイスの USB セレクティブ サスペンド機能を有効にするために必要な INF セクションを含む、システム提供の Input.inf ファイルを参照します。
Needs ディレクティブは、デバイスのインストール時に Input.inf のどのセクションを処理する必要があるのかを示します。 この場合、既定の HID_Inst セクションではなく、HID_SelSus_Inst セクションが選択されます。これは、セレクティブ サスペンドをサポートしていません。
VendorXYZDevice_Install.NT.Services セクションは INF DDInstall.HW セクションです。 この例では、INF Include ディレクティブおよび Needs ディレクティブと同じ値も含まれています。