Manipulando IRP_MN_QUERY_POWER para estados de energia do sistema
O power manager envia um IRP de energia com o código IRP secundário IRP_MN_QUERY_POWER e SystemPowerState em Parameters.Power.Type para determinar se ele pode ser alterado com segurança para um estado de energia do sistema especificado (S1-S5) e para permitir que os drivers se preparem para essa alteração.
Sempre que possível, o power manager consulta antes de enviar um IRP_MN_SET_POWER que solicita um estado mais baixo (menos alimentado). No entanto, em casos de uma bateria com falha ou perda iminente de energia, o gerenciador de energia envia o IRP de set-power sem consultar primeiro. O power manager nunca envia uma consulta antes de enviar um IRP para definir o sistema no estado de trabalho (S0).
Para obter informações sobre como um proprietário de política de energia para um dispositivo lida com solicitações de energia de consulta do sistema, consulte Manipulando um sistema Query-Power IRP em um proprietário de política de energia do dispositivo.
Para obter informações sobre como os drivers (que não são o proprietário da política de energia de um dispositivo) lidam com solicitações de energia de consulta do sistema, consulte o seguinte:
Manipulando um sistema Query-Power IRP em um filtro ou driver de função
Falha em um sistema Query-Power IRP em um filtro ou driver de função
Manipulando um sistema Query-Power IRP em um motorista de ônibus
Observe que um driver nunca deve enviar um dispositivo IRP_MN_SET_POWER solicitação em resposta a uma consulta do sistema; ele solicita esse IRP somente depois de receber uma solicitação de set-power do sistema.
Como o power manager envia o IRP de consulta do sistema para cada pilha de dispositivos no sistema, é possível que um driver para um dispositivo falhe na consulta enquanto os drivers de outros dispositivos o completam com êxito. A partir do Windows Vista, uma alteração no estado de energia do sistema para um estado de suspensão é uma alteração crítica do estado de energia. Mesmo que um driver falhe em um IRP de energia de consulta do sistema, o power manager no Windows Vista ainda poderá alterar o estado de energia do sistema para um estado de suspensão. Também é possível que uma bateria expire enquanto uma consulta estiver ativa, exigindo um desligamento imediato. Consequentemente, após uma consulta IRP, os drivers devem estar preparados para receber qualquer um dos seguintes IRPs de energia:
Um IRP_MN_SET_POWER para o estado consultado
Um IRP_MN_SET_POWER a um estado de poder diferente
Um IRP_MN_SET_POWER para o estado de energia atual
Um IRP_MN_QUERY_POWER para qualquer estado
Normalmente, no entanto, um driver recebe um IRP de set-power do sistema após uma consulta do sistema IRP. Independentemente disso, um driver deve estar pronto para alterar o estado de energia do sistema, mesmo que o driver falhe em um IRP de energia de consulta.