Compartilhar via


Determinando o estado correto de energia do dispositivo

O proprietário da política de energia verifica a matriz DeviceState na estrutura DEVICE_CAPABILITIES para determinar o intervalo válido de estados de energia do dispositivo para cada estado de energia do sistema. A matriz lista o estado de energia do dispositivo mais alto que o dispositivo subjacente pode dar suporte para cada estado de energia do sistema.

Ao escolher um estado específico desse intervalo, considere o seguinte:

  • A maioria dos dispositivos entra no estado D0 quando o sistema entra no estado S0.

  • A maioria dos dispositivos entra no estado D3 quando o sistema entra em qualquer estado de suspensão. No entanto, um dispositivo habilitado para ativação pode ser necessário para inserir D1 ou D2, se ele der suporte a esses estados. Para obter mais informações, consulte Reporting Device Power Capabilities.

  • Regras especiais se aplicam ao dispositivo que manterá o arquivo de hibernação. Se o IRP do sistema solicitar PowerSystemHibernate, o dispositivo que manterá o arquivo de hibernação não deverá desligar. O proprietário da política de energia para esse dispositivo deve solicitar o estado de energia do dispositivo D3 e salvar o contexto, mas os drivers do dispositivo não devem desligar o dispositivo.

Se o IRP do sistema solicitar PowerSystemShutdown, o driver deverá marcar o valor POWER_ACTION em Irp-Parameters.Power.ShutdownType> para determinar o motivo da alteração de estado. Para obter mais informações, consulte System Power Actions.

O proprietário da política de energia do dispositivo deve enviar um IRP de set-power do dispositivo para cada IRP de set-power do sistema, mesmo que o dispositivo já esteja no estado correto de energia do dispositivo. Se o driver suspendeu anteriormente as operações de dispositivo em resposta a um IRP de energia de consulta, o IRP de energia definida notifica-o para interromper o enfileiramento de IRPs e retornar à operação normal para seu estado de energia atual. A única exceção ocorre quando o dispositivo está no estado D3; nesse caso, o driver não precisa enviar uma solicitação de IRP_MN_SET_POWER adicional para D3.