Gestion d’un IRP Set-Power système dans un propriétaire de stratégie d’alimentation d’appareil
En réponse à un IRP d’alimentation définie par le système, le propriétaire de la stratégie d’alimentation d’une pile d’appareils est chargé de placer sa pile d’appareils dans un état d’alimentation approprié.
En règle générale, lorsqu’un propriétaire d’une stratégie d’alimentation d’appareil reçoit un IRP_MN_SET_POWER pour un état d’alimentation du système, il doit répondre en transmettant l’IRP définie sur l’alimentation du système dans la pile de l’appareil. Un propriétaire de la stratégie d’alimentation des appareils doit également répondre en envoyant la pile d’appareils IRP_MN_SET_POWER pour un état d’alimentation de l’appareil correspondant dans une routine IoCompletion . Une fois que tous les pilotes de la pile ont terminé l’IRP set-power de l’appareil, le propriétaire de la stratégie d’alimentation du périphérique termine l’IRP set-power du système.
Toutefois, pour améliorer les performances de la reprise du système, les propriétaires d’alimentation des appareils qui n’ont pas d’appareils enfants doivent utiliser une approche différente pour réduire le temps nécessaire à un système pour revenir à l’état de fonctionnement S0 à partir d’un état de veille. Dans ce cas, en réponse à une IRP définie sur l’alimentation du système qui retourne un système à l’état de fonctionnement S0, les propriétaires de stratégie d’alimentation des appareils doivent effectuer la séquence d’opérations suivante :
Après avoir reçu un IRP IRP_MN_SET_POWER pour l’état d’alimentation du système S0 dans la routine DispatchPower du pilote, définissez une routine IoCompletion pour l’IRP et passez l’IRP dans la pile.
Dans la routine IoCompletion définie à l’étape (1), demandez un IRP IRP_MN_SET_POWER pour l’état d’alimentation de l’appareil correspondant, puis terminez immédiatement l’IRP set-power du système. Le pilote ne doit pas attendre que les irps de définition de l’alimentation du périphérique se terminent avant de terminer l’IRP de définition de l’alimentation du système. La routine IoCompletion est exécutée une fois que tous les pilotes de niveau inférieur ont terminé l’IRP set-power du système et que l’IRP set-power système est repassée à l’objet de périphérique fonctionnel (FDO) du pilote.
Effectuez toute initialisation spécifique à l’appareil requise.
Terminez l’IRP définie sur l’alimentation de l’appareil qui a été envoyée à l’étape (2).
Traiter les demandes d’E/S qui ont été mises en file d’attente lorsque l’appareil était dans un état de veille de l’appareil.
Le gestionnaire d’alimentation du noyau a un ensemble limité de files d’attente de distribution IRP et doit avertir rapidement tous les appareils du système du retour à l’état de fonctionnement du système S0. Les pilotes qui ne parviennent pas à terminer l’IRP de réglage de l’alimentation du système aussi rapidement que possible empêchent d’autres appareils d’obtenir leur IRP à alimentation définie du système, ce qui peut nuire aux performances globales du système pendant les transitions d’état d’alimentation du système.
Pour plus d’informations sur la gestion des irps de puissance définie par le système, consultez les rubriques suivantes :
Détermination de l’état d’alimentation correct de l’appareil
Envoi d’un appareil Set-Power IRP en réponse à un IRP Set-Power système