WinUSB 電源管理

WinUSB は電源管理に KMDF ステート マシンを使用します。 電力ポリシーは WinUsb_SetPowerPolicy の呼び出しを通じて管理されます。

WinUSB の電源の振る舞いを変更するには、デバイスの INF で既定のレジストリ設定を変更します。 これらの値は、INF の HW.AddReg セクションに値を追加することで、レジストリ内のデバイス固有の場所に書き込む必要があります。

次の一覧で説明しているレジストリ値をデバイスの INF で指定して、電源の振る舞いを変更できます。

システム ウェイク

この機能は、SystemWakeEnabled DWORD レジストリ設定によって制御されます。 この値は、デバイスが低電力状態からシステムをウェイクアップできるようにするかどうかを示します。

HKR,,SystemWakeEnabled,0x00010001,1
  • 値が 0 であるか、この値がない場合は、デバイスがシステムをウェイクアップすることを許可されていないことを示します。
  • デバイスがシステムをウェイクアップできるようにするには、SystemWakeEnabled を 0 以外の値に設定します。 デバイスの [プロパティ] ページのチェック ボックスが自動的に有効になるため、ユーザーは設定を上書きできます。

Note

SystemWakeEnabled 設定を変更してもセレクティブ サスペンドには影響しません。このレジストリ値はシステムのサスペンドにのみ関係します。

セレクティブ サスペンド

セレクティブ サスペンドは、システムの設定のいずれか、または WinUSB の設定のいずれかによって無効にできます。 1 つの設定により WinUSB でセレクティブ サスペンドを有効にすることはできません。

次の電力ポリシー設定は、WinUsb_SetPowerPolicyPolicyType パラメーターで指定され、セレクティブ サスペンドの振る舞いに影響します。

  • AUTO_SUSPEND: 0 に設定すると、デバイスはセレクティブ サスペンド モードに設定されません。
  • SUSPEND_DELAY: デバイスがアイドル状態になってから、WinUSB がデバイスにセレクティブ サスペンドに移行するように要求するまでの時間を設定します。

次の表は、レジストリ キーがセレクティブ サスペンド機能にどのような影響するかを示しています。

レジストリ キー 説明
DeviceIdleEnabled これは DWORD 値です。 このレジストリ値は、アイドル時にデバイスの電源をオフにできる (セレクティブ サスペンド) かどうかを示します。
  • 値が 0 であるか、この値がない場合は、デバイスがアイドル時の電源オフをサポートしていないことを示します。
  • 0 以外の値は、デバイスがアイドル時の電源オフをサポートしていることを示します。
  • DeviceIdleEnabled を設定しない場合、AUTO_SUSPEND 電力ポリシー設定の値は無視されます。

HKR,,DeviceIdleEnabled,0x00010001,1
DeviceIdleIgnoreWakeEnable 0 以外の値に設定すると、デバイスが RemoteWake をサポートしていなくてもサスペンドします。
UserSetDeviceIdleEnabled この値は DWORD 値です。 このレジストリ値は、ユーザーがアイドル状態の既定を上書きできるように、デバイスの [プロパティ] ページのチェック ボックスを有効にするかどうかを示します。 UserSetDeviceIdleEnabled を 0 以外の値に設定した場合、チェック ボックスが有効になり、ユーザーはアイドル時のデバイスの電源オフを無効にできます。 値が 0 であるか、この値がない場合は、チェック ボックスが有効になっていないことを示します。
  • ユーザーがデバイスの省電力機能を無効にしている場合、AUTO_SUSPEND 電力ポリシーの設定値は無視されます。
  • ユーザーがデバイスの省電力機能を有効にしている場合、アイドル時にデバイスをサスペンドするかどうかを決定するために AUTO_SUSPEND の値が使用されます。

DeviceIdleEnabled を設定しない場合、UserSetDeviceIdleEnabled は無視されます。

HKR,,UserSetDeviceIdleEnabled,0x00010001,1
DefaultIdleState これは DWORD 値です。 このレジストリ値は AUTO_SUSPEND 電力ポリシー設定の既定値を設定します。 このレジストリ キーは、デバイスへのハンドルが開かれていないときに、セレクティブ サスペンドを有効または無効にするために使用されます。
  • 値が 0 であるか、この値がない場合は、既定でデバイスがアイドル時に一時停止されないことを示します。 AUTO_SUSPEND 電力ポリシーが有効になっている場合にのみ、デバイスがアイドル時にサスペンドできるようになります。
  • 0 以外の値は、既定でアイドル時にデバイスを一時停止できることを示します。

DeviceIdleEnabled が設定されていない場合、この値は無視されます。

HKR,,DefaultIdleState,0x00010001,1
DefaultIdleTimeout これは DWORD 値です。 このレジストリ値は SUSPEND_DELAY 電力ポリシー設定の既定状態を設定します。

この値は、デバイスがアイドル状態であると判断するまでの待機時間をミリ秒単位で示します。

HKR,,DefaultIdleTimeout,0x00010001,100

アイドル状態の検出

すべての書き込みとコントロール転送により、デバイスは強制的に D0 電力状態になり、アイドル タイマーがリセットされます。 IN エンドポイント キューは電源管理の対象外です。 読み取り要求が送信されると、デバイスはシステムをウェイクアップします。 ただし、読み取り要求の待機中にデバイスがアイドル状態になることがあります。