次の方法で共有


EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 コールバック関数 (wdfdevice.h)

[KMDF と UMDF に適用]

ドライバーの EvtDeviceArmWakeFromS0 イベント コールバック関数アーム (つまり、有効) デバイスは、システムが システムの動作状態 (S0) のままである場合、低電力デバイス状態の間にスリープ解除信号をトリガーできるようにします。

構文

EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtWdfDeviceArmWakeFromS0;

NTSTATUS EvtWdfDeviceArmWakeFromS0(
  [in] WDFDEVICE Device
)
{...}

パラメーター

[in] Device

フレームワーク デバイス オブジェクトへのハンドル。

戻り値

操作が成功した場合、EvtDeviceArmWakeFromS0 コールバック関数は、STATUS_SUCCESSまたはNT_SUCCESS(status) が TRUE と等しい別の状態値を返す必要があります。 それ以外の場合は、NT_SUCCESS(status) が FALSE状態値を返す必要があります。

NT_SUCCESS(status) が FALSE の場合、フレームワークはドライバーの EvtDeviceDisarmWakeFromS0 コールバック関数を呼び出しません。 (フレームワークは、PnP マネージャーにデバイスの障害を報告しません。)

注釈

EvtDeviceArmWakeFromS0 コールバック関数を登録するには、ドライバーで WdfDeviceInitSetPowerPolicyEventCallbacks を呼び出す必要があります。 さらに、ドライバーは、そのWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造体の IdleCaps メンバーに IdleCanWakeFromS0 を設定する必要があります。

EvtDeviceArmWakeFromS0 コールバック関数は、デバイスがバス上でウェイクシグナルをトリガーする外部イベントを検出するために必要なデバイス固有の操作を処理します。 バス ドライバーの EvtDeviceEnableWakeAtBus コールバック関数は、PCI バスの Power Management イベント (PME) 信号の有効化など、バス固有の操作を処理します。

ドライバーが EvtDeviceArmWakeFromS0 コールバック関数を登録している場合、デバイスがまだ D0 デバイスの電源状態である間に、バス ドライバーがデバイスの電源状態を下げる前に、フレームワークがドライバーの代わりに 待機/スリープ解除 IRP を 送信した後に、フレームワークによって呼び出されます。

このプロセスは、次の順序で実行されます。

  1. フレームワークは、デバイスが事前に設定された時間アイドル状態になっていると判断します。
  2. フレームワークは、ドライバーの EvtDeviceArmWakeFromS0 コールバック関数を呼び出します。
  3. フレームワークは、デバイスの電源を下げるために、デバイスのバスのドライバーを要求します。
デバイスが低電力状態になる直前に、フレームワークによってドライバーの EvtDeviceD0Exit コールバック関数が呼び出されます。

フレームワークがこのコールバック関数を呼び出すタイミングの詳細については、「 PnP と Power Management のシナリオ」を参照してください。

デバイスが次の場合は、 EvtDeviceArmWakeFromS0 コールバック関数を指定する必要はありません。

  • "選択的中断" をサポートする USB デバイスです。
  • システムの電源が完全に入っている間は、電源を切ることができません。
  • デバイスがスリープ解除信号をトリガーできるようにする特別なハードウェア操作は必要ありません。
デバイスが USB の "選択的な中断" をサポートしていて、ドライバーがWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造の IdleCaps メンバーで IdleUsbSelectiveSuspend を設定した場合、フレームワークは、デバイスが事前にアイドル状態になったときに、USB バス ドライバーに "選択的な中断" 要求を送信します。

このコールバック関数の詳細については、「 アイドル状態の電源ダウンのサポート」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfdevice.h (Wdf.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromS0