Visão geral da operação de espera/ativação
O mecanismo de ativação do sistema operacional funciona conforme mostrado na figura a seguir.
Enquanto o sistema e o dispositivo estão no estado de trabalho, o proprietário da política de energia de um dispositivo determina que seu dispositivo deve ser habilitado ("armado") para ativação. O proprietário da política de energia solicita que um IRP de energia (PoRequestPowerIrp com código secundário IRP_MN_WAIT_WAKE) seja enviado para seu PDO para informar todos os drivers em sua pilha de dispositivos. Na solicitação, o proprietário da política especifica uma rotina de retorno de chamada (não igual a uma rotina IoCompletion ).
O power manager, por meio do gerenciador de E/S, envia o IRP para a parte superior da pilha do dispositivo.
Os motoristas definem rotinas de IoCompletion e passam o IRP para baixo até chegar ao motorista do ônibus.
O motorista do barramento habilita a ativação no dispositivo físico, se possível, e marca o IRP pendente. Se necessário, ele também solicita um IRP de espera/ativação para seu pai.
Algum tempo depois, um sinal de ativação externo chega.
O motorista do ônibus conclui o IRP_MN_WAIT_WAKE.
O gerente de E/S chama rotinas de IoCompletion que foram definidas à medida que os drivers passavam o IRP para baixo na pilha.
O gerente de E/S chama a rotina de retorno de chamada definida pelo proprietário da política quando solicitou o IRP.
A solicitação IRP_MN_WAIT_WAKE não altera o estado de energia do dispositivo ou do sistema. Ele apenas habilita a ativação no dispositivo para que, posteriormente, se o dispositivo entrar em um estado de suspensão apropriado, um sinal externo fará com que o dispositivo (e possivelmente o sistema) desperte.
Quando um sinal de ativação chega, o comportamento dos drivers é o mesmo se o dispositivo ativa o sistema ou apenas ele mesmo. Se o dispositivo estiver habilitado para ativação e o sistema estiver em um estado de suspensão do qual o dispositivo possa despertá-lo, o dispositivo despertará o sistema. Se o dispositivo estiver habilitado para ativação e o sistema estiver no estado de trabalho, somente o dispositivo acordará.
Como computadores e dispositivos variam em design, especialmente em relação aos planos de energia, os estados de energia do sistema e do dispositivo com suporte -- e, portanto, os estados que podem dar suporte à espera/ativação -- não são os mesmos em todas as configurações de hardware. Portanto, qualquer driver que possua a política de energia para seu dispositivo e cada motorista de ônibus deve prestar atenção aos recursos da configuração individual em que está em execução. Para obter mais informações, consulte Determinando se um dispositivo pode ativar o sistema.
Para obter mais detalhes sobre operações de espera/ativação, consulte Noções básicas sobre o caminho dos IRPs de espera/ativação por meio de uma árvore de dispositivos e Visão geral da espera/conclusão do IRP de ativação.