Un dispositivo vuelve a su estado de trabajo.
Un dispositivo que se encuentra en un estado de bajo consumo vuelve a su estado de funcionamiento si se produce una de las siguientes acciones:
El dispositivo detecta un evento externo y desencadena una señal de reactivación en su bus. El controlador de bus que detecta la señal de reactivación llama a WdfDeviceIndicateWakeStatus. Como resultado, el marco llama a la función de devolución de llamada EvtDeviceDisableWakeAtBus del controlador de bus.
El dispositivo ha estado inactivo y un controlador llama a WdfDeviceStopIdle.
El estado de energía del sistema ha cambiado de un estado de baja potencia a su estado de funcionamiento (S0).
En cada una de estas situaciones, el marco llama a la función de devolución de llamada EvtDeviceD0Entry del controlador de bus, que luego restaura el dispositivo (un dispositivo secundario del bus) a su estado de funcionamiento (D0).
Para cada función y controlador de filtro que admite el dispositivo, el marco hace lo siguiente, en secuencia, un controlador a la vez, empezando por el controlador que es más bajo en la pila de controladores:
El marco llama a la función de devolución de llamada EvtDeviceD0Entry del controlador (si existe).
El marco llama a la función de devolución de llamada EvtInterruptEnable del controlador (si existe) para cada interrupción y, a continuación, llama a la función de devolución de llamada EvtDeviceD0EntryPostInterruptsEnabled del controlador (si existe), para que el controlador pueda habilitar interrupciones del dispositivo.
Si el hardware y el controlador admiten DMA, el marco llama a las funciones de devolución de llamada EvtDmaEnablerFill, EvtDmaEnablerEnable y EvtDmaEnablerSelfManagedIoStart de controlador (si existen) para cada canal DMA que se creó.
Si el controlador es el propietario de la directiva de energía del dispositivo, el marco llama a su función de devolución de llamada EvtDeviceDisarmWakeFromS0 o EvtDeviceDisarmWakeFromSx .
El marco llama a la función de devolución de llamada EvtChildListScanForChildren del controlador (si existe).
El marco reinicia todas las colas de E/S administradas por energía del controlador y llama a sus funciones de devolución de llamada EvtIoResume (si es necesario).
Si el controlador usa E/S autoadministrado, el marco llama a la función de devolución de llamada EvtDeviceSelfManagedIoRestart del controlador.