Share via


Vue d’ensemble de l’opération Wait/Wake

Le mécanisme de mise en éveil du système d’exploitation fonctionne comme indiqué dans la figure suivante.

diagramme illustrant une vue d’ensemble du traitement irp-mn-wait-wake.

  1. Lorsque le système et l’appareil sont en état de fonctionnement, le propriétaire de la stratégie d’alimentation d’un appareil détermine que son appareil doit être activé (« armé ») pour le réveil. Le propriétaire de la stratégie d’alimentation demande qu’un IRP power (PoRequestPowerIrp avec un code mineur IRP_MN_WAIT_WAKE) soit envoyé à son PDO pour informer tous les pilotes de sa pile d’appareils. Dans la demande, le propriétaire de la stratégie spécifie une routine de rappel (qui n’est pas la même qu’une routine IoCompletion ).

  2. Le gestionnaire d’alimentation, par le biais du gestionnaire d’E/S, envoie l’IRP en haut de la pile des appareils.

  3. Les pilotes définissent des routines IoCompletion et passent l’IRP jusqu’à ce qu’il atteigne le pilote de bus.

  4. Le pilote de bus active le réveil sur l’appareil physique, s’il le peut, et marque l’IRP en attente. Si nécessaire, il demande également un IRP d’attente/veille pour son parent.

  5. Quelque temps plus tard, un signal de réveil externe arrive.

  6. Le pilote de bus termine la IRP_MN_WAIT_WAKE.

  7. Le gestionnaire d’E/S appelle les routines IoCompletion qui ont été définies car les pilotes ont passé l’IRP dans la pile.

  8. Le gestionnaire d’E/S appelle la routine de rappel définie par le propriétaire de la stratégie lorsqu’il a demandé l’IRP.

La demande IRP_MN_WAIT_WAKE ne modifie pas l’état d’alimentation de l’appareil ou du système. Il permet simplement de se réveiller sur l’appareil afin que plus tard, si l’appareil entre dans un état de veille approprié, un signal externe provoque le réveil de l’appareil (et éventuellement du système).

Lorsqu’un signal de réveil arrive, le comportement des pilotes est le même, que l’appareil réveille le système ou seulement lui-même. Si l’appareil est activé pour le réveil et que le système est dans un état de veille à partir duquel l’appareil peut le réveiller, l’appareil réveille le système. Si l’appareil est activé pour la mise en éveil et que le système est à l’état de fonctionnement, seul l’appareil se réveille.

Étant donné que la conception des ordinateurs et des appareils varie, en particulier en ce qui concerne les plans d’alimentation, les états d’alimentation du système et des appareils pris en charge, et donc les états qui peuvent prendre en charge l’attente/la veille, ne sont pas les mêmes pour toutes les configurations matérielles. Par conséquent, tout pilote qui possède une stratégie d’alimentation pour son appareil et chaque pilote de bus doit prêter une attention particulière aux fonctionnalités de la configuration individuelle sur laquelle il s’exécute. Pour plus d’informations, consultez Déterminer si un appareil peut réveiller le système.

Pour plus d’informations sur les opérations d’attente/veille, consultez Présentation du chemin des IRP d’attente/veille via une arborescenced’appareils et Vue d’ensemble de l’achèvement de l’IRP d’attente/veille.