Manipulando o Power IRPs
Os drivers lidam com IRPs de energia em uma rotina DispatchPower . Todas as solicitações de gerenciamento de energia têm o código IRP principal IRP_MJ_POWER e um dos seguintes códigos secundários:
IRP_MN_QUERY_POWER – Consultas para determinar se a alteração do estado de energia é viável
IRP_MN_SET_POWER — solicita uma alteração de um estado de energia para outro
IRP_MN_WAIT_WAKE — Solicita que um dispositivo seja habilitado para ativar a si mesmo ou o sistema
IRP_MN_POWER_SEQUENCE — Solicita informações para otimizar a restauração de energia em um dispositivo específico
O suporte para IRP_MN_SET_POWER e IRP_MN_QUERY_POWER é necessário. Todos os drivers devem estar preparados para lidar com esses IRPs.
O suporte para IRP_MN_WAIT_WAKE é necessário para todos os drivers na pilha de dispositivos para qualquer dispositivo que possa despertar em resposta a um sinal externo. Um driver envia esse IRP para habilitar o dispositivo para ativação.
O suporte para IRP_MN_POWER_SEQUENCE é opcional. Esse IRP fornece uma otimização para dispositivos que levam muito tempo para restaurar a energia.
Um IRP de energia pode especificar uma operação de energia do sistema ou uma operação de energia do dispositivo. Os POWER IRPs para o sistema e os IRPs de energia para dispositivos individuais tomam caminhos ligeiramente diferentes por meio de uma pilha de dispositivos, conforme explicado nas seções a seguir.