Recursos D3cold de um dispositivo

Antes que o driver que é o PPO (proprietário da política de energia) para um dispositivo permita que o dispositivo insira D3cold (quando o computador deve permanecer em S0), o driver deve verificar se o dispositivo será responsivo e continuar a operar corretamente depois que o dispositivo entrar em D3cold.

Para um dispositivo PnP (Plug and Play), o sistema operacional normalmente obtém informações sobre os recursos D3cold do dispositivo do driver de barramento pai.

Por exemplo, se um dispositivo estiver anexado a um barramento PCI ou PCI Express, o espaço de configuração PCI do dispositivo conterá um Bloco de Registro de Gerenciamento de Energia que indica os recursos do dispositivo. Os sinalizadores de funcionalidade nesse bloco especificam os estados de energia do dispositivo dos quais o dispositivo pode sinalizar um evento de gerenciamento de energia ou PME (o termo PCI para um evento de ativação). Esses estados podem incluir D3hot e D3cold. Para obter mais informações sobre o gerenciamento de energia PCI, consulte a Especificação da Interface de Gerenciamento de Energia do Barramento PCI.

Se um dispositivo precisar ser capaz de sinalizar um evento de ativação de qualquer estado Dx de baixa potência que ele insere, o dispositivo não deverá inserir D3cold, a menos que o dispositivo, o controlador de barramento pai e a plataforma de hardware ofereçam suporte à sinalização de um evento de ativação de D3cold.

O driver KMDF para um dispositivo chama o método WdfDeviceAssignS0IdleSettings para permitir que o dispositivo ociosa no estado de energia do dispositivo de menor potência do qual o dispositivo possa sinalizar um evento de ativação. A partir do KMDF versão 1.11, WdfDeviceAssignS0IdleSettings inclui D3cold no intervalo de possíveis estados Dx de baixa potência. Esse método permite que um dispositivo ocioso em D3cold somente se o dispositivo, o driver de barramento pai e o firmware do sistema ACPI deem suporte à sinalização de eventos de ativação de D3cold.

O driver WDM para um dispositivo deve decidir para qual estado Dx de baixa potência mover o dispositivo quando o dispositivo estiver ocioso. (Por outro lado, WdfDeviceAssignS0IdleSettings seleciona automaticamente esse estado Dx para que o driver não precise.) Se o dispositivo precisar ser capaz de sinalizar um evento de ativação de qualquer estado Dx de baixa potência que ele insere, o driver poderá chamar a rotina GetIdleWakeInfo para determinar o estado de energia do dispositivo de menor potência do qual o dispositivo pode sinalizar um evento de ativação. Para obter essas informações, GetIdleWakeInfo consulta o driver de barramento subjacente e o firmware do sistema ACPI. Com base nas informações de GetIdleWakeInfo, o driver pode chamar a rotina SetD3ColdSupport para habilitar ou desabilitar as transições do dispositivo para D3cold.

Um dispositivo pode não exigir a capacidade de sinalizar um evento de ativação de D3cold. Em vez disso, o dispositivo pode ser necessário para fazer a transição de D3cold para D0 apenas em resposta a ações iniciadas pelo software. Por exemplo, talvez o driver precise ativar o dispositivo se o driver receber uma solicitação de E/S para o dispositivo. Com poucas exceções, o driver para esse dispositivo pode permitir que o dispositivo insira D3cold. Uma possível exceção é um dispositivo que requer uma grande quantidade de tempo para fazer uma transição de D3cold para D0. Por exemplo, um dispositivo de exibição pode conter uma grande quantidade de memória que precisa ser salva antes que o dispositivo insira D3cold e seja restaurado depois que o dispositivo sair de D3cold.

Para obter mais informações sobre o suporte de ACPI para D3cold, consulte Requisitos de firmware para D3cold.