Un dispositivo entra en un estado de Low-Power

Un dispositivo deja su estado de trabajo (D0) y entra en un estado de baja potencia si se produce una de las siguientes acciones:

  • El dispositivo está inactivo (es decir, no se tiene acceso) y es capaz de entrar en un estado de inactividad de bajo consumo mientras el sistema permanece en estado de funcionamiento (S0).

  • El estado de energía del sistema ha cambiado de su estado de trabajo (S0) a un estado de bajo consumo. (Los controladores pueden llamar a WdfDeviceGetSystemPowerAction para determinar el motivo por el que cambia el estado de energía de un sistema).

Para cada función y controlador de filtro que admita el dispositivo, el marco hace lo siguiente, en secuencia, un controlador a la vez, empezando por el controlador que es más alto en la pila de controladores:

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

  2. El marco detiene todas las colas de E/S administradas por energía del controlador y llama a sus funciones de devolución de llamada EvtIoStop (si existen).

  3. 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 EvtDeviceArmWakeFromS0, EvtDeviceArmWakeFromSx o EvtDeviceArmWakeFromSxWithReason .

  4. Si el hardware y el controlador admiten DMA, el marco llama a las funciones de devolución de llamada EvtDmaEnablerSelfManagedIoStop, EvtDmaEnablerFlush y EvtDmaEnablerDisable del controlador para cada canal DMA creado.

  5. El marco llama a la función de devolución de llamada EvtDeviceD0ExitPreInterruptsDisabled del controlador (si existe) y, a continuación, llama a la función de devolución de llamada EvtInterruptDisable del controlador (si existe) para cada interrupción, de modo que el controlador pueda deshabilitar las interrupciones del dispositivo.

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

El controlador de autobús es el controlador de la pila a la que se llama last. Cuando el marco llama a la función de devolución de llamada EvtDeviceD0Exit del controlador de bus, la función de devolución de llamada establece el estado de energía del dispositivo (un dispositivo secundario del bus) en un estado de bajo consumo. El marco especifica el estado de baja potencia D3 a menos que el propietario de la directiva de energía haya especificado un estado de bajo consumo diferente.

Nota

El método utilizado por el controlador de bus para establecer el estado de alimentación del dispositivo secundario es específico del bus. Por ejemplo, la especificación de administración de energía del bus PCI define un registro de administración de energía de 16 bits /Registro de estado (PMCSR). Los dos bits más bajos ("PowerState") determinan el estado de energía actual del dispositivo y se usan para establecer el dispositivo en un nuevo estado de alimentación. Cuando el pci.sys PDO recibe IRP_MN_SET_POWER/D3, lee PMCSR, cambia los bits de PowerState a 11b (nivel de energía D3) y reescribe el PMCSR.