Impedir cambios en el estado de energía del sistema
Aunque los controladores no pueden establecer directamente la directiva de energía del sistema, el administrador de energía proporciona tres rutinas a través de las cuales un controlador puede evitar que el sistema pase fuera del estado de trabajo: PoSetSystemState, PoRegisterSystemState y PoUnregisterSystemState.
Al llamar a PoRegisterSystemState o PoSetSystemState, un controlador puede notificar al administrador de energía que un usuario está presente o que el controlador requiere el uso del sistema o la pantalla.
PoRegisterSystemState permite a un controlador registrar un estado ocupado continuo. Devuelve un identificador a través del cual el controlador puede cambiar más adelante su configuración. Siempre que el registro de estado esté en vigor, el administrador de energía no intenta poner el sistema en suspensión. El controlador cancela el registro de estado llamando a PoUnregisterSystemState.
Con PoSetSystemState, un controlador notifica al administrador de energía las mismas condiciones (usuario presente, sistema requerido, pantalla requerida), pero esta configuración no es continua. Tiene el efecto de reiniciar cualquier recuento de inactividad asociado a las condiciones especificadas.
Con estas rutinas, un controlador puede evitar muchas transiciones, pero no todas, fuera del estado de trabajo. El administrador de energía siempre apaga el sistema cuando la pérdida de energía es inminente o cuando un usuario solicita explícitamente el apagado.