Prévention des changements d’état d’alimentation du système
Bien que les pilotes ne puissent pas définir directement la stratégie d’alimentation du système, le gestionnaire d’alimentation fournit trois routines permettant à un pilote d’empêcher les transitions système hors de l’état de fonctionnement : PoSetSystemState, PoRegisterSystemState et PoUnregisterSystemState.
En appelant PoRegisterSystemState ou PoSetSystemState, un pilote peut informer le gestionnaire d’alimentation qu’un utilisateur est présent ou que le pilote nécessite l’utilisation du système ou de l’affichage.
PoRegisterSystemState permet à un pilote d’inscrire un état occupé continu. Il retourne un handle par lequel le pilote peut modifier ultérieurement ses paramètres. Tant que l’inscription d’état est en vigueur, le gestionnaire d’alimentation ne tente pas de mettre le système en veille. Le pilote annule l’inscription d’état en appelant PoUnregisterSystemState.
Avec PoSetSystemState, un pilote avertit le gestionnaire d’alimentation des mêmes conditions (utilisateur présent, système obligatoire, affichage obligatoire), mais ce paramètre n’est pas continu. Il a pour effet de redémarrer tous les nombres d’inactivité associés aux conditions spécifiées.
À l’aide de ces routines, un pilote peut prévenir de nombreuses transitions, mais pas toutes, hors de l’état de fonctionnement. Le gestionnaire d’alimentation arrête toujours le système lorsque la perte d’alimentation est imminente ou lorsqu’un utilisateur demande explicitement l’arrêt.