Partager via


Gestion des IRP_MN_QUERY_POWER pour les états d’alimentation du système

Le gestionnaire d’alimentation envoie un IRP d’alimentation avec le code IRP secondaire IRP_MN_QUERY_POWER et SystemPowerState dans Parameters.Power.Type pour déterminer s’il peut passer en toute sécurité à un état d’alimentation du système spécifié (S1-S5) et pour permettre aux pilotes de se préparer à une telle modification.

Dans la mesure du possible, le gestionnaire d’alimentation interroge avant d’envoyer un IRP_MN_SET_POWER qui demande un état inférieur (moins alimenté). Toutefois, en cas de défaillance de la batterie ou de perte imminente d’alimentation, le gestionnaire d’alimentation envoie l’IRP de puissance définie sans interroger au préalable. Le gestionnaire d’alimentation n’envoie jamais de requête avant d’envoyer un IRP pour définir le système dans l’état de fonctionnement (S0).

Pour plus d’informations sur la façon dont un propriétaire de stratégie d’alimentation d’un appareil gère les demandes d’alimentation de requête système, consultez Gestion d’un Query-Power IRP dans un propriétaire de stratégie d’alimentation d’appareil.

Pour plus d’informations sur la façon dont les pilotes (qui ne sont pas le propriétaire de la stratégie d’alimentation d’un appareil) gèrent les demandes d’alimentation des requêtes système, consultez les rubriques suivantes :

Gestion d’un IRP Query-Power système dans un filtre ou un pilote de fonction

Échec d’un Query-Power IRP système dans un filtre ou un pilote de fonction

Gestion d’un IRP Query-Power système dans un pilote de bus

Notez qu’un pilote ne doit jamais envoyer une demande d’appareil IRP_MN_SET_POWER en réponse à une requête système ; il ne demande un tel IRP qu’après avoir reçu une demande d’alimentation définie par le système.

Étant donné que le gestionnaire d’alimentation envoie l’IRP de requête système à chaque pile de périphériques sur le système, il est possible qu’un pilote pour un appareil échoue à la requête tandis que les pilotes d’autres appareils la terminent correctement. À compter de Windows Vista, une modification de l’état d’alimentation du système en état de veille est une modification critique de l’état d’alimentation. Même si un pilote échoue à un IRP d’alimentation de requête système, le gestionnaire d’alimentation dans Windows Vista peut toujours changer l’état d’alimentation du système en état de veille. Il est également possible qu’une batterie expire pendant qu’une requête est active, ce qui nécessite un arrêt immédiat. Par conséquent, après une requête IRP, les pilotes doivent être prêts à recevoir l’un des IRP d’alimentation suivants :

  • Une IRP_MN_SET_POWER à l’état interrogé

  • Une IRP_MN_SET_POWER à un autre état d’alimentation

  • Une IRP_MN_SET_POWER à l’état d’alimentation actuel

  • Un IRP_MN_QUERY_POWER à n’importe quel état

En règle générale, toutefois, un pilote reçoit un IRP défini par le système à la suite d’une requête IRP système. Quoi qu’il en soit, un pilote doit être prêt à modifier l’état d’alimentation du système même si le pilote échoue à un IRP d’alimentation de requête.