デバイスのアイドル動作とウェイク動作のユーザーによる制御

デバイスにアイドル電源切断機能またはウェイクアップ機能がある場合は、ユーザーにこれらの機能の有効化または無効化を許可するかどうかを決定できます。

ドライバーは、WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 構造体のメンバーを使用して、レジストリ アクセス権を持つユーザーがデバイスのアイドル電源切断機能を有効または無効にできるかどうかを指定できます。

ドライバーは、WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 構造体のメンバーを使用して、レジストリ アクセス権を持つユーザーがデバイスのウェイクアップ機能を有効または無効にできるかどうかを指定できます。

どちらの構造体でも、ドライバーは機能を有効にしたり、機能を無効にしたり、ユーザーに機能を制御したりすることができます。 ユーザーに制御を与えるために、適切な設定構造で、ドライバーは UserControlOfIdleSettings または UserControlOfWakeSettings メンバーをそれぞれ IdleAllowUserControl または WakeAllowUserControl に、Enabled メンバーを WdfTrue または WdfUseDefault に設定します。

ドライバーでユーザーがアイドルとウェイクアップ設定を変更できる場合、フレームワークは、ユーザーがアイドルおよびウェイクアップ機能を有効または無効にできるように、デバイス マネージャー表示されるプロパティ シート ページの形式でユーザー インターフェイスを提供します。 (フレームワークは IdleInWorkingState および WakeFromSleepState レジストリ値を変更します。ドライバーとそのインストール ファイルは、その値を読み取ったり変更したりしないでください。)

ユーザーがデバイスの設定を変更した場合、フレームワークは、必要に応じて、新しい設定に合わせてデバイスの電源状態を更新します。 たとえば、デバイスがアイドル状態であったために既に低電力状態になっている間に、ユーザーがデバイスのアイドル電源切断機能を無効にした場合、フレームワークはデバイスを動作状態に戻します。

ドライバーでユーザーがアイドルとウェイクアップ設定を変更できる場合、フレームワークは既定でこれらの設定を有効にします。 一部のドライバー ライターは、ユーザーに変更を許可する前に、最初に設定を無効にすることが必要な場合があります。

そのため、KMDF バージョン 1.9 以降、フレームワークでは、デバイスの hardware key の下にあるデバイスの Device Parameters\WDF サブキーに格納される、WdfDefaultIdleInWorkingStateWdfDefaultWakeFromSleepState という名前の 2 つのドライバー定義可能なレジストリ値が提供されます。 値は REG_DWORD 型指定され、"0" は機能が無効であることを示し、"1" は機能が有効であることを示します。

ドライバーの INF ファイルは、INF AddReg directive を使用して、WdfDefaultIdleInWorkingState レジストリ値と WdfDefaultWakeFromSleepState レジストリ値を作成および設定できます。 たとえば、ドライバーでデバイスのアイドル電源切断機能が有効になっているが、デバイスのインストール時に機能を無効にする必要がある場合、ドライバーの INF ファイルで WdfDefaultIdleInWorkingState を "0" に設定できます。

フレームワークは、ドライバーが UserControlOfIdleSettings または UserControlOfWakeSettings メンバーをそれぞれ IdleAllowUserControl または WakeAllowUserControl に設定し、Enabled メンバーを WdfTrue または WdfUseDefault に設定した場合にのみ、WdfDefaultIdleInWorkingState および WdfDefaultWakeFromSleepState レジストリ値を適切な設定構造体で調べます。