次の方法で共有


電源ポリシーの所有権

各デバイスについて、いずれか (1 つだけ) のデバイスのドライバーを、デバイスの "電源ポリシー所有者" に指定する必要があります。電源ポリシー所有者は、適切なデバイス電源状態を判断し、デバイスの電源状態を変更する必要がある場合は、デバイスのドライバー スタックに要求を送信します。

フレームワークには、デバイスの電源状態の変更を要求するコードが用意されているため、フレームワークベースのドライバーにはこのコードが含まれていません。既定では、システムがスリープ状態に移行すると、フレームワークはデバイスの電源状態を D3 に下げるようデバイスのバスのドライバーに要求します (デバイスにスリープ解除機能が備わっている場合は、フレームワークがデバイスのスリープ状態を D1 または D2 に設定するように、ドライバーで既定の動作を変更できます)。システムの電源状態が作業状態 (S0) に戻ると、フレームワークは、デバイスを作業状態 (D0) に戻すようにバス ドライバーに要求します。

電源ポリシー所有者は、デバイスの次の機能の有効化または無効化も行います。

  • デバイスはアイドル状態であるが、システムが作業状態 (S0) である場合に、低電力 (スリープ) 状態に移行する機能

  • 外部イベントを検出したときに、スリープ状態を解除する機能

  • 外部イベントを検出したときに、システム全体のスリープ状態を解除する機能

デバイスがこのようなアイドル時の低電力化機能やシステムのスリープ解除機能を備えている場合、電源ポリシー所有者は、WdfDeviceInitSetPowerPolicyEventCallbacks を呼び出して、一連の電源ポリシー イベント コールバック関数を登録することもできます。

フレームワークベースのドライバーでは、既定でデバイスの関数ドライバーが電源ポリシー所有者になります (関数ドライバーがなく、バス ドライバーが WdfPdoInitAssignRawDevice を呼び出した場合は、バス ドライバーが電源ポリシー所有者になります)。ドライバー スタックの電源ポリシー所有者を変更するには、既定の電源ポリシー所有者で WdfDeviceInitSetPowerPolicyOwnership を呼び出して所有権を無効にし、電源ポリシー所有者になるドライバーで WdfDeviceInitSetPowerPolicyOwnership を呼び出して所有権を有効にする必要があります。

フレームワークは、電源ポリシー所有者に代わって次の操作を行います。

  • ドライバーと、ドライバー スタック内の他のドライバーとの間で、電源ポリシーに関するすべての通信を処理します。たとえば、ドライバーがバス ドライバーに対してデバイスの電源状態を変更するように要求する必要はありません。この要求はフレームワークによって行われます。

  • ドライバーが電源ポリシー イベント コールバック関数を登録している場合、デバイスの低電力状態を解除する機能を有効化または無効化する必要があるときに、フレームワークがこれらのコールバック関数を呼び出します。

  • ドライバーでユーザーによるアイドル設定やスリープ解除設定の変更が許可されている場合、フレームワークは、デバイス マネージャーに表示されるプロパティ シート ページの形でユーザー インターフェイスを提供します。

電力ポリシー所有者の権限の詳細については、次のトピックを参照してください。

アイドル時の低電力化機能のサポート

システムのスリープ解除のサポート

デバイスのアイドル状態およびスリープ解除動作のユーザーによる制御