裝置回到其工作狀態

如果發生下列其中一項,處於低電源狀態的裝置會返回其工作狀態:

  • 裝置會偵測外來事件,並在其匯流排上觸發喚醒訊號。 偵測喚醒訊號的匯流排驅動程式會呼叫 WdfDeviceIndicateWakeStatus。 因此,架構會呼叫匯流排驅動程式的 EvtDeviceDisableWakeAtBus 回呼函式。

  • 裝置已閒置,且驅動程式會呼叫 WdfDeviceStopIdle

  • 系統的電源狀態已從低電源狀態變更為其運作 (S0) 狀態。

在這些情況下,架構會呼叫匯流排驅動程式的 EvtDeviceD0Entry 回呼函式,然後將該裝置還原 (匯流排的子裝置) 至其運作 (D0) 狀態。

針對支援裝置的每個函式和篩選驅動程式,架構會依序執行下列動作,一次執行一個驅動程式,從驅動程式堆疊中最低的驅動程式開始:

  1. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDeviceD0Entry 回呼函式 (。

  2. 架構會呼叫驅動程式的 EvtInterruptEnable 回呼函式 (如果每個中斷存在) ,然後它會呼叫驅動程式的 EvtDeviceD0EntryPostInterruptsEnabled 回呼函式 (如果存在) ,讓驅動程式可以啟用裝置中斷。

  3. 如果硬體和驅動程式支援 DMA,架構會呼叫驅動程式的 EvtDmaEnablerFillEvtDmaEnablerEnablerEnable,以及 EvtDmaEnablerSelfManagedIoStart 回呼函式 (如果每個已建立的 DMA 通道都存在) 。

  4. 如果驅動程式是裝置的電源原則擁有者,架構會呼叫其 EvtDeviceDisarmWakeFromS0EvtDeviceDisarmWakeFromSx 回呼函式。

  5. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtChildListScanForChildren 回呼函式 (。

  6. 架構會重新開機所有驅動程式的電源受控 I/O 佇列,並視需要呼叫其 EvtIoResume 回呼函式) (。

  7. 如果驅動程式使用自我管理的 I/O,架構會呼叫驅動程式的 EvtDeviceSelfManagedIoRestart 回呼函式。