Estado de Trabalho do Dispositivo D0

No estado de energia do dispositivo D0, o dispositivo está totalmente ativado e operacional. Nesse estado, um driver de dispositivo pode interagir com o dispositivo para executar operações de E/S e o dispositivo pode gerar interrupções. Se o dispositivo tiver registros de hardware mapeados na memória ou no espaço de endereço de E/S, o driver poderá acessar esses registros.

Começando com Windows 8, um driver de dispositivo pode conectar uma ISR (rotina de serviço de interrupção) de nível passivo à interrupção de um dispositivo. O dispositivo pode gerar interrupções independentemente de ele ser em D0. Quando em um estado Dx de baixa potência, o dispositivo pode gerar uma interrupção que atua como um gatilho para trazer o dispositivo de volta para D0. O ISR está agendado para ser executado em IRQL = PASSIVE_LEVEL depois que o dispositivo entra em D0. Em versões anteriores do Windows, incluindo o Windows 7, um dispositivo não deve gerar interrupções quando está em um estado de energia do dispositivo diferente de D0.

Uma transição de D0 para um estado Dx de baixa potência só pode ocorrer quando o driver do dispositivo, enquanto atua como o proprietário da política de energia para o dispositivo, inicia a transição chamando a rotina PoRequestPowerIrp . Quando o power manager responde a essa chamada enviando um IRP de energia (IRP_MN_SET_POWER), o driver do dispositivo, o driver de barramento e o firmware de plataforma (por meio do driver ACPI do Windows, Acpi.sys) manipulam esse IRP de forma cooperativa para alterar o estado de energia do dispositivo.

O hardware do dispositivo normalmente monitora um conjunto de eventos internos que podem gerar interrupções em tempo de execução ou sinais de ativação, dependendo de como o dispositivo é configurado. O driver implementa um caminho de código para responder a interrupções e outro para responder a eventos de ativação. O código do driver poderá ser simplificado se o caminho do código de interrupção não precisar lidar com eventos de ativação e o caminho do código de ativação não precisar lidar com interrupções. Como prática recomendada, o driver deve configurar o dispositivo para gerar interrupções somente quando o dispositivo estiver em D0 e gerar sinais de ativação somente quando o dispositivo estiver em um estado Dx de baixa potência. Normalmente, o driver configura o dispositivo para gerar um sinal de ativação logo antes de o dispositivo sair do D0 e configura o dispositivo para gerar interrupções logo após o dispositivo entrar em D0.

Normalmente, um dispositivo entra no estado D0 quando seu sinal de redefinição de hardware é declarado. Na verdade, as especificações para barramentos como PCI e PCI Express exigem esse comportamento.

Estas são as características do estado D0:

Consumo de energia
Nível mais alto de consumo contínuo de energia para o dispositivo.

Contexto do dispositivo
Todo o contexto retido.

Comportamento do driver de dispositivo
Operação normal.

Tempo de restauração
Não aplicável.

Funcionalidade de ativação
Não aplicável.