システム ウェイクアップのサポート

システムが低電力状態にある間、一部のデバイスは、受信ネットワーク パケットなどの外部イベントを検出し、システムをスリープ解除できます。 たとえば、デバイスの電源管理機能 (PMC) レジスタに示されているように、PCI デバイスにシステム ウェイクアップ機能がある場合は、PCI バスで電源管理イベント (PME) 信号を発生させてシステムをスリープ解除します。

デバイスがシステム全体の低電力状態からシステムをスリープ解除できる場合、電源ポリシー所有者EvtDriverDeviceAdd コールバック関数は、次の 2 つの手順を実行する必要があります。

  1. WdfDeviceAssignSxWakeSettings を呼び出して、次を指定します。

    • デバイスが入力する低電力状態
    • ユーザーがデバイスのアイドル設定を制御できるかどうか
    • デバイスのウェイクアップ機能が有効か無効か

    これらの設定の詳細については、「WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 構造体」を参照してください。

  2. デバイスに必要な場合は、WdfDeviceInitSetPowerPolicyEventCallbacks を呼び出して、次のイベント コールバック関数を登録します。

バス ドライバーは、システムのスリープ解除にも参加します。 デバイス バスのドライバーは通常、EvtDeviceEnableWakeAtBus および EvtDeviceDisableWakeAtBus コールバック関数を提供します。 これらの関数は、低電力状態から復帰するデバイスの機能を有効または無効にするためにバス アダプターで必要な操作を行います。

バス ドライバーは、デバイスがウェイク信号をトリガーしたと判断した場合、WdfDeviceIndicateWakeStatus を呼び出して、デバイスの電源を復元する必要があることをフレームワークに通知する必要があります。 フレームワークは、ドライバー スタック内の残りのドライバーにこの情報を渡します。

デバイスのウェイクアップ機能を制御するレジストリ エントリの詳細については、「デバイスのアイドル状態とスリープ解除動作のユーザー制御」を参照してください。