Estado de trabajo del dispositivo D0

En el estado de alimentación del dispositivo D0, el dispositivo está totalmente encendido y operativo. En este estado, un controlador de dispositivo puede interactuar con el dispositivo para realizar operaciones de E/S y el dispositivo puede generar interrupciones. Si el dispositivo tiene registros de hardware asignados a memoria o espacio de direcciones de E/S, el controlador puede acceder a estos registros.

A partir de Windows 8, un controlador de dispositivo puede conectar una rutina de servicio de interrupción de nivel pasivo (ISR) a la interrupción desde un dispositivo. El dispositivo puede generar interrupciones independientemente de si está en D0. Cuando se encuentra en un estado Dx de bajo consumo, el dispositivo puede generar una interrupción que actúa como desencadenador para devolver el dispositivo a D0. El ISR está programado para ejecutarse en IRQL = PASSIVE_LEVEL después de que el dispositivo entre en D0. En versiones anteriores de Windows, incluido Windows 7, un dispositivo no debe generar interrupciones cuando se encuentra en un estado de alimentación del dispositivo distinto de D0.

Una transición de D0 a un estado Dx de baja potencia solo puede producirse cuando el controlador del dispositivo, mientras actúa como propietario de la directiva de energía para el dispositivo, inicia la transición llamando a la rutina PoRequestPowerIrp . Cuando el administrador de energía responde a esta llamada mediante el envío de un IRP de alimentación (IRP_MN_SET_POWER), el controlador del dispositivo, el controlador de autobús y el firmware de la plataforma (a través del controlador ACPI de Windows, Acpi.sys) controlan cooperativamente este IRP para cambiar el estado de alimentación del dispositivo.

El hardware del dispositivo normalmente supervisa un conjunto de eventos internos que pueden generar interrupciones en tiempo de ejecución o señales de reactivación, en función de cómo se configure el dispositivo. El controlador implementa una ruta de acceso de código para responder a interrupciones y otra para responder a eventos de reactivación. El código de controlador se puede simplificar si la ruta de acceso del código de interrupción no necesita tratar con eventos de reactivación y la ruta de acceso del código de reactivación no necesita tratar con interrupciones. Como procedimiento recomendado, el controlador debe configurar el dispositivo para generar interrupciones solo cuando el dispositivo está en D0 y para generar señales de reactivación solo cuando el dispositivo está en estado Dx de bajo consumo. Normalmente, el controlador configura el dispositivo para generar una señal de reactivación justo antes de que el dispositivo salga de D0 y configure el dispositivo para generar interrupciones justo después de que el dispositivo entre en D0.

Normalmente, un dispositivo entra en el estado D0 cuando se afirma su señal de restablecimiento de hardware. De hecho, las especificaciones de los autobuses como PCI y PCI Express requieren este comportamiento.

Estas son las características del estado D0:

Consumo de energía
Nivel más alto de consumo de energía continuo para el dispositivo.

Contexto del dispositivo
Todo el contexto retenido.

Comportamiento del controlador de dispositivo
Operación normal.

Tiempo de restauración
No es aplicable.

Funcionalidad de reactivación
No es aplicable.