Compartir a través de


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:

  1. El marco llama a la función de devolución de llamada EvtDeviceD0Entry del controlador (si existe).

  2. 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.

  3. 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ó.

  4. 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 .

  5. El marco llama a la función de devolución de llamada EvtChildListScanForChildren del controlador (si existe).

  6. 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).

  7. Si el controlador usa E/S autoadministrado, el marco llama a la función de devolución de llamada EvtDeviceSelfManagedIoRestart del controlador.