次の方法で共有


デバイスが動作状態に戻る

低電力状態にあるデバイスは、次のいずれかの状況になると動作状態に復帰します。

  • デバイスが外部イベントを検出し、そのバス上でウェイク信号をトリガーする。 ウェイク信号を検出したバスドライバーは WdfDeviceIndicateWakeStatus を呼び出します。 その結果、フレームワークはバス ドライバーの EvtDeviceDisableWakeAtBus コールバック関数を呼び出します。

  • デバイスがアイドル状態であり、ドライバーが WdfDeviceStopIdle を呼び出す。

  • システムの電力状態が低電力状態から動作 (S0) 状態に変わった。

これらの各状況で、フレームワークはバス ドライバーの EvtDeviceD0Entry コールバック関数を呼び出し、デバイス (バスの子デバイス) を動作状態 (D0) に復帰させます。

デバイスをサポートする機能とフィルター ドライバーごとに、フレームワークは、ドライバー スタックの最下位にあるドライバーから始めて、一度に 1 つのドライバーずつ、以下の一連の手順を進めていきます。

  1. フレームワークは、ドライバーの EvtDeviceD0Entry コールバック関数 (存在する場合) を呼び出します。

  2. フレームワークは、割り込みごとにドライバーの EvtInterruptEnable コールバック関数 (存在する場合) を呼び出した後、ドライバーがデバイスの割り込みを有効にできるように、ドライバーの EvtDeviceD0EntryPostInterruptsEnabled コールバック関数 (存在する場合) を呼び出します。

  3. ハードウェアとドライバーが DMA をサポートしている場合、フレームワークは、作成された各 DMA チャネルのドライバーの EvtDmaEnablerFillEvtDmaEnablerEnableEvtDmaEnablerSelfManagedIoStart コールバック関数 (存在する場合) を呼び出します。

  4. ドライバーがデバイスの電源ポリシーの所有者である場合、フレームワークはその EvtDeviceDisarmWakeFromS0 または EvtDeviceDisarmWakeFromSx コールバック関数を呼び出します。

  5. フレームワークは、ドライバーの EvtChildListScanForChildren コールバック関数 (存在する場合) を呼び出します。

  6. フレームワークは、ドライバーの電源管理 I/O キューをすべて再開し、EvtIoResume コールバック関数を呼び出します (必要に応じて)。

  7. ドライバーが自己管理 I/O を使用している場合、フレームワークはドライバーの EvtDeviceSelfManagedIoRestart コールバック関数を呼び出します。