Partilhar via


Capacidades D3cold de um dispositivo

Antes de o driver que é o proprietário da política de energia (PPO) para um dispositivo permitir que o dispositivo entre no estado 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 no estado D3cold.

Para um dispositivo Plug and Play (PnP), o sistema operativo normalmente obtém informações sobre as capacidades D3cold do dispositivo a partir do driver de barramento pai.

Por exemplo, se um dispositivo estiver conectado 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 capacidade neste bloco especificam os estados de energia do dispositivo a partir dos quais o dispositivo pode sinalizar um evento de gerenciamento de energia, ou PME (o termo PCI para um evento de despertar). 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 deve ser capaz de sinalizar um evento de despertar a partir de qualquer estado Dx de baixa potência em que entra, o dispositivo não deve entrar em D3cold a menos que o dispositivo, o controlador de barramento pai e a plataforma de hardware suportem a sinalização de um evento de despertar a partir do D3cold.

O driver KMDF para um dispositivo invoca o método WdfDeviceAssignS0IdleSettings para permitir que o dispositivo fique ocioso no estado de menor consumo de energia do qual pode sinalizar um evento de despertar. A partir da versão 1.11 do KMDF, WdfDeviceAssignS0IdleSettings inclui D3cold no intervalo de possíveis estados Dx de baixa potência. Esse método permite que um dispositivo fique ocioso no D3cold apenas se o próprio dispositivo, o driver do barramento pai e o firmware do sistema ACPI suportarem sinalizar eventos de despertar a partir do D3cold.

O driver WDM de um dispositivo deve decidir para qual estado Dx de baixo consumo de energia mover o dispositivo quando o dispositivo estiver ocioso. (Por outro lado, WdfDeviceAssignS0IdleSettings seleciona automaticamente esse estado Dx para que o driver não precise fazê-lo.) Se o dispositivo deve ser capaz de sinalizar um evento de despertar a partir de qualquer estado Dx de baixa potência que ele entra, o driver pode chamar a rotina GetIdleWakeInfo para determinar o estado de energia do dispositivo de menor potência a partir do qual o dispositivo pode sinalizar um evento de despertar. 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 ativar ou desativar as transições do dispositivo para D3cold.

Um dispositivo pode não exigir a capacidade de sinalizar um evento de despertar do D3cold. Em vez disso, o dispositivo pode ser obrigado a fazer a transição de D3cold para D0 apenas em resposta a ações iniciadas por software. Por exemplo, o driver pode precisar ativar o dispositivo se o driver receber uma solicitação de E/S para o dispositivo. Com poucas exceções, o driver para tal dispositivo pode permitir que o dispositivo entre em 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 entre no D3cold e restaurada depois que o dispositivo sair do D3cold.

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