Partilhar via


Falha em um sistema Query-Power IRP em um filtro ou driver de função

Um driver de funções ou filtro (que não é o proprietário da política de energia de um dispositivo) poderá falhar em uma solicitação de IRP_MN_QUERY_POWER se um dos seguintes itens for verdadeiro:

  • O dispositivo está habilitado para ativação e o estado de energia do sistema solicitado é menos alimentado do que o valor de SystemWake, que especifica o estado menos alimentado do qual o dispositivo pode ativar o sistema. Por exemplo, um dispositivo que pode ativar o sistema do S2, mas não do S3, falharia em uma consulta para S3, mas teria êxito em uma consulta para S2.

  • Inserir um estado de energia do dispositivo que corresponda ao estado solicitado forçaria o driver a abandonar uma operação que perderia dados, como uma conexão de modem aberta. Um driver raramente falhará em uma consulta por esse motivo; na maioria das circunstâncias, o aplicativo lida com esses casos.

Para falhar em uma solicitação de IRP_MN_QUERY_POWER para um estado de energia do sistema, um driver deve executar as seguintes etapas:

  1. Chame PoStartNextPowerIrp para indicar que o driver está preparado para lidar com o próximo IRP de energia. (Somente Windows Server 2003, Windows XP e Windows 2000)

  2. Defina Irp-IoStatus.Status> como uma falha status e chame IoCompleteRequest, especificando IO_NO_INCREMENT. Não passe o IRP mais abaixo na pilha do dispositivo.

  3. Chame IoReleaseRemoveLock para liberar o bloqueio adquirido anteriormente.

  4. Retornar uma falha status de sua rotina DispatchPower.