UMDF でのデバイスのアイドル動作とウェイク動作のユーザーによる制御
警告
UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。
アーカイブされた UMDF 1 サンプルは、「Windows 11、バージョン 22H2 - 2022 年 5 月 ドライバーサンプルの更新」でご確認いただけます。
詳しくは、「UMDF の概要」をご覧ください。
デバイスにアイドル電源切断機能またはウェイクアップ機能がある場合は、ユーザーにこれらの機能の有効化または無効化を許可するかどうかを決定できます。
UMDF ベースのドライバーは、IWDFDevice2::AssignS0IdleSettings メソッドを使用して、レジストリ アクセス権を持つユーザーがデバイスのアイドル電源切断機能を有効または無効にできるかどうかを指定できます。
ドライバーは、WDFDevice2::AssignSxWakeSettings定 メソッドを使用して、レジストリ アクセス権を持つユーザーがデバイスのウェイクアップ機能を有効または無効にできるかどうかを指定できます。
どちらの方法でも、ドライバーは機能を有効にしたり、機能を無効にしたり、ユーザーに機能を制御したりすることができます。
ドライバーが AssignS0IdleSettings メソッドを呼び出すときに、UserControlOfIdleSettings パラメーターを IdleAllowUserControl に設定し、Enabled パラメーターを WdfTrue または WdfUseDefault に設定することで、デバイスのアイドル機能を制御できます。
ドライバーが AssignSxWakeSettings メソッドを呼び出すときに、UserControlOfWakeSettings パラメーターを WakeAllowUserControl に設定し、有効パラメーターを WdfTrue または WdfUseDefault に設定することで、デバイスのウェイクアップ機能を制御できます。
ドライバーでユーザーがアイドルとウェイクアップ設定を変更できる場合、フレームワークは、ユーザーがアイドルおよびウェイクアップ機能を有効または無効にできるように、デバイス マネージャー表示されるプロパティ シート ページの形式でユーザー インターフェイスを提供します。 (フレームワークは IdleInWorkingState および WakeFromSleepState レジストリ値を変更します。ドライバーとそのインストール ファイルは、その値を読み取ったり変更したりしないでください。)
ユーザーがデバイスの設定を変更した場合、フレームワークは、必要に応じて、新しい設定に合わせてデバイスの電源状態を更新します。 たとえば、デバイスがアイドル状態であったために既に低電力状態になっている間に、ユーザーがデバイスのアイドル電源切断機能を無効にした場合、フレームワークはデバイスを動作状態に戻します。
ドライバーでユーザーがアイドルとウェイクアップ設定を変更できる場合、フレームワークは既定でこれらの設定を有効にします。 一部のドライバー ライターは、ユーザーに変更を許可する前に、最初に設定を無効にすることが必要な場合があります。
そのため、フレームワークのバージョン 1.9 以降では、デバイスの hardware key の下にあるデバイスの Device Parameters\WDF サブキーに格納される、WdfDefaultIdleInWorkingState と WdfDefaultWakeFromSleepState という名前の 2 つのドライバー定義可能なレジストリ値が提供されます。 値は REG_DWORD 型指定され、"0" は機能が無効であることを示し、"1" は機能が有効であることを示します。
ドライバーの INF ファイルは、INF AddReg directive を使用して、WdfDefaultIdleInWorkingState レジストリ値と WdfDefaultWakeFromSleepState レジストリ値を作成および設定できます。 たとえば、ドライバーでデバイスのアイドル電源切断機能が有効になっているが、デバイスのインストール時に機能を無効にする必要がある場合、ドライバーの INF ファイルで WdfDefaultIdleInWorkingState を "0" に設定できます。
フレームワークは、ドライバーが IWDFDevice2::AssignS0IdleSettings メソッドを呼び出すときに、ドライバーが UserControlOfIdleSettings パラメーターを IdleAllowUserControl に設定し、Enable パラメーターを WdfTrue または WdfUseDefault に設定した場合にのみ、WdfDefaultIdleInWorkingState レジストリ値を調べます。
フレームワークは、ドライバーが IWDFDevice2::AssignSxWakeSettings メソッドを呼び出すときに、ドライバーが UserControlOfWakeSettings パラメーターを IWakeAllowUserControl に設定し、Enabled パラメーターを WdfTrue または WdfUseDefault に設定した場合にのみ、WdfDefaultWakeFromSleepState レジストリ値を調べます。