Un dispositivo restituisce lo stato di lavoro
Un dispositivo che si trova in uno stato di bassa potenza restituisce lo stato di funzionamento se si verifica uno dei seguenti:
Il dispositivo rileva un evento esterno e attiva un segnale di riattivazione sul suo bus. Il driver del bus che rileva il segnale di riattivazione chiama WdfDeviceIndicateWakeStatus. Di conseguenza, il framework chiama la funzione di callback EvtDeviceDisableWakeAtBus del bus.
Il dispositivo è stato inattiva e un driver chiama WdfDeviceStopIdle.
Lo stato di alimentazione del sistema è cambiato da uno stato a bassa potenza allo stato di funzionamento (S0).
In ognuna di queste situazioni il framework chiama la funzione di callback EvtDeviceD0Entry del driver del bus, che ripristina quindi il dispositivo (dispositivo figlio del bus) allo stato funzionante (D0).
Per ogni driver di funzione e filtro che supporta il dispositivo, il framework esegue le operazioni seguenti, in sequenza, un driver alla volta, a partire dal driver più basso nello stack di driver:
Il framework chiama la funzione di callback EvtDeviceD0Entry del driver (se esistente).
Il framework chiama la funzione di callback EvtInterruptEnable del driver (se presente) per ogni interruzione e quindi chiama la funzione di callback EvtDeviceD0EntryPostInterruptsEnabled (se presente), in modo che il driver possa abilitare gli interruzioni del dispositivo.
Se il supporto hardware e driver DMA, il framework chiama le funzioni di callback EvtDmaEnablerFill, EvtDmaEnablerEnabler e EvtDmaEnablerSelfManagedIoStart (se presenti) per ogni canale DMA creato.
Se il driver è il proprietario del criterio di alimentazione del dispositivo, il framework chiama la funzione di callback EvtDeviceDisarmWakeFromS0 o EvtDeviceDisarmWakeFromSx .
Il framework chiama la funzione di callback EvtChildListScanForChildren del driver (se esistente).
Il framework riavvia tutte le code di I/O gestite dal driver e chiama le funzioni di callback EvtIoResume , se necessario.
Se il driver usa l'I/O self-managed, il framework chiama la funzione di callback EvtDeviceSelfManagedIoRestart del driver.