デバイスが動作状態に戻る
低電力状態にあるデバイスは、次のいずれかの状況になると動作状態に復帰します。
デバイスが外部イベントを検出し、そのバス上でウェイク信号をトリガーする。 ウェイク信号を検出したバスドライバーは WdfDeviceIndicateWakeStatus を呼び出します。 その結果、フレームワークはバス ドライバーの EvtDeviceDisableWakeAtBus コールバック関数を呼び出します。
デバイスがアイドル状態であり、ドライバーが WdfDeviceStopIdle を呼び出す。
システムの電力状態が低電力状態から動作 (S0) 状態に変わった。
これらの各状況で、フレームワークはバス ドライバーの EvtDeviceD0Entry コールバック関数を呼び出し、デバイス (バスの子デバイス) を動作状態 (D0) に復帰させます。
デバイスをサポートする機能とフィルター ドライバーごとに、フレームワークは、ドライバー スタックの最下位にあるドライバーから始めて、一度に 1 つのドライバーずつ、以下の一連の手順を進めていきます。
フレームワークは、ドライバーの EvtDeviceD0Entry コールバック関数 (存在する場合) を呼び出します。
フレームワークは、割り込みごとにドライバーの EvtInterruptEnable コールバック関数 (存在する場合) を呼び出した後、ドライバーがデバイスの割り込みを有効にできるように、ドライバーの EvtDeviceD0EntryPostInterruptsEnabled コールバック関数 (存在する場合) を呼び出します。
ハードウェアとドライバーが DMA をサポートしている場合、フレームワークは、作成された各 DMA チャネルのドライバーの EvtDmaEnablerFill、EvtDmaEnablerEnable、EvtDmaEnablerSelfManagedIoStart コールバック関数 (存在する場合) を呼び出します。
ドライバーがデバイスの電源ポリシーの所有者である場合、フレームワークはその EvtDeviceDisarmWakeFromS0 または EvtDeviceDisarmWakeFromSx コールバック関数を呼び出します。
フレームワークは、ドライバーの EvtChildListScanForChildren コールバック関数 (存在する場合) を呼び出します。
フレームワークは、ドライバーの電源管理 I/O キューをすべて再開し、EvtIoResume コールバック関数を呼び出します (必要に応じて)。
ドライバーが自己管理 I/O を使用している場合、フレームワークはドライバーの EvtDeviceSelfManagedIoRestart コールバック関数を呼び出します。