Compartir a través de


Error de un irP del sistema Query-Power en un filtro o controlador de funciones

Un controlador de filtro o función (que no es el propietario de la directiva de energía para un dispositivo) puede producir un error en una solicitud de IRP_MN_QUERY_POWER si se cumple alguna de las siguientes condiciones:

  • El dispositivo está habilitado para reactivación y el estado de energía del sistema solicitado es menor que el valor de SystemWake, que especifica el estado menos alimentado desde el que el dispositivo puede reactivar el sistema. Por ejemplo, un dispositivo que puede reactivar el sistema desde S2 pero no desde S3 produciría un error en una consulta para S3, pero que se realiza correctamente en una consulta para S2.

  • Al escribir un estado de alimentación del dispositivo que corresponda al estado solicitado, el controlador forzaría a abandonar una operación que perdería datos, como una conexión de módem abierta. Un controlador rara vez producirá un error en una consulta por este motivo; en la mayoría de las circunstancias, la aplicación controla estos casos.

Para producir un error en una solicitud de IRP_MN_QUERY_POWER para un estado de alimentación del sistema, un controlador debe seguir estos pasos:

  1. Llame a PoStartNextPowerIrp para indicar que el controlador está preparado para controlar el siguiente IRP de energía. (Solo Windows Server 2003, Windows XP y Windows 2000)

  2. Establezca Irp-IoStatus.Status> en un estado de error y llame a IoCompleteRequest y especifique IO_NO_INCREMENT. No pase el IRP más abajo de la pila del dispositivo.

  3. Llame a IoReleaseRemoveLock para liberar el bloqueo adquirido anteriormente.

  4. Devuelve un estado de error de su rutina DispatchPower .