Compartir a través de


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 su estado de funcionamiento (S0).

  • El estado de energía del sistema ha cambiado de su estado de trabajo (S0) a un estado de baja potencia. (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.

  2. El marco suspende todas las colas de E/S de gestión de energía del controlador y llama a sus funciones callback EvtIoStop (si existen).

  3. Si el controlador es el propietario de la directiva de energía del dispositivo, el marco llama a la 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, EvtDmaEnablerFlushy EvtDmaEnablerDisable (si existen) 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, para 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 conductor del autobús es el conductor en la pila de llamadas al que se llama último. 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 D3 de baja potencia salvo que el propietario de la política de energía haya especificado un estado de baja potencia diferente.

Nota:

El método utilizado por el controlador de bus para establecer el estado de energía 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 control y estado de administración de energía de 16 bits (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 energía. Cuando el PDO de pci.sys recibe IRP_MN_SET_POWER/D3, lee el PMCSR, cambia los bits de PowerState a 11b (nivel de potencia D3) y sobrescribe el PMCSR.