Control de IRP_MN_QUERY_POWER para estados de energía del sistema
El administrador de energía envía un IRP de energía con el código IRP secundario IRP_MN_QUERY_POWER y SystemPowerState en Parameters.Power.Type para determinar si puede cambiar de forma segura a un estado de alimentación del sistema especificado (S1-S5) y permitir que los controladores se preparen para este cambio.
Siempre que sea posible, el administrador de energía consulta antes de enviar un IRP_MN_SET_POWER que solicita un estado inferior (menos alimentado). Sin embargo, en los casos de una batería con error o pérdida inminente de energía, el administrador de energía envía el IRP de energía establecida sin consultar primero. El administrador de energía nunca envía una consulta antes de enviar un IRP para establecer el sistema en estado de trabajo (S0).
Para obtener información sobre cómo un propietario de la directiva de energía de un dispositivo controla las solicitudes de energía de consulta del sistema, consulte Control de un IRP del sistema Query-Power en un propietario de la directiva de energía del dispositivo.
Para obtener información sobre cómo los controladores (que no son el propietario de la directiva de energía para un dispositivo) controlan las solicitudes de energía de consulta del sistema, consulte lo siguiente:
Controlar un IRP de System Query-Power en un controlador de filtro o función
Error de un irP del sistema Query-Power en un filtro o controlador de funciones
Control de un IRP del sistema Query-Power en un controlador de bus
Tenga en cuenta que un controlador nunca debe enviar un dispositivo IRP_MN_SET_POWER solicitud en respuesta a una consulta del sistema; solicita este tipo de IRP solo después de recibir una solicitud de energía establecida por el sistema.
Dado que el administrador de energía envía el IRP de consulta del sistema a cada pila de dispositivos del sistema, es posible que un controlador de un dispositivo produzca un error en la consulta mientras los controladores de otros dispositivos lo completan correctamente. A partir de Windows Vista, un cambio en el estado de alimentación del sistema a un estado de suspensión es un cambio crítico del estado de energía. Incluso si un controlador produce un error en un IRP de consulta del sistema, el administrador de energía de Windows Vista podría seguir modificando el estado de alimentación del sistema a un estado de suspensión. También es posible que una batería expire mientras una consulta está activa, lo que requiere un apagado inmediato. Por lo tanto, después de una consulta IRP, los controladores deben estar preparados para recibir cualquiera de los siguientes IRP de energía:
Un IRP_MN_SET_POWER al estado consultado
Un IRP_MN_SET_POWER a un estado de alimentación diferente
Un IRP_MN_SET_POWER al estado de alimentación actual
Un IRP_MN_QUERY_POWER a cualquier estado
Sin embargo, normalmente, un controlador recibe un IRP de alimentación establecida por el sistema después de una consulta del sistema IRP. Independientemente de, un controlador debe estar listo para cambiar el estado de alimentación del sistema incluso si el controlador produce un error en un IRP de alimentación de consulta.