Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À compter de Windows 8, l’infrastructure de gestion de l’alimentation (PoFx) permet à un pilote de gérer les états d’alimentation des différents composants d’un appareil. La gestion de l’alimentation au niveau du composant existe côte à côte avec la gestion de l’alimentation au niveau de l’appareil. Pour obtenir une présentation, consultez Vue d’ensemble de Power Management Framework.
Cette page décrit l’API PoFx pour Component-Level Gestion de l’alimentation.
Pour inscrire un appareil à gérer par PoFx, le pilote appelle la routine PoFxRegisterDevice . Le pilote transmet cette routine à une structure PO_FX_DEVICE qui, entre autres données, contient un tableau de structures PO_FX_COMPONENT . Chaque élément de ce tableau décrit les états d’alimentation Fx d’un composant dans l’appareil et les attributs de chaque état Fx. (Au minimum, un composant qui ne prend pas en charge la gestion de l’alimentation au niveau du composant implémente uniquement l’état F0.) Les attributs d’un état d’alimentation Fx particulier dans un composant particulier sont décrits par une structure PO_FX_COMPONENT_IDLE_STATE , qui contient les valeurs suivantes :
- Latence de transition, qui est le temps nécessaire pour effectuer une transition de cet état Fx à l’état F0 (entièrement activé).
- L'exigence de résidence, qui est le temps qu'un composant doit passer dans cet état Fx pour qu'une transition vers l'état soit valable.
- Puissance nominale, qui est la puissance consommée par le composant dans cet état Fx.
PoFx utilise ces informations (en plus d’autres entrées et dépendances à l’échelle du système) pour prendre des décisions intelligentes sur l’état d’alimentation Fx dans lequel un composant doit se trouver à tout moment. PoFx doit équilibrer deux objectifs concurrents. Tout d’abord, un composant inactif doit être configuré pour consommer autant de puissance que possible. Deuxièmement, un composant doit être prêt à passer rapidement d’un état Fx à faible alimentation à F0 pour maintenir l’apparence d’un appareil toujours activé et toujours connecté.
La gestion de l’alimentation au niveau du composant peut être effectuée uniquement lorsqu’un appareil est dans l’état d’alimentation D0 (entièrement activé). Lorsqu’un appareil est dans le D1 (presque activé), D2 (presque désactivé) ou D3, l’appareil est inaccessible. Lorsque l’appareil est dans l’état D0, seuls les composants que le pilote utilise activement doivent rester dans l’état F0. Les composants inactifs peuvent potentiellement basculer vers des états Fx à faible puissance pour réduire la consommation d’énergie.
Alors qu’un appareil est dans l’état d’alimentation D0, le pilote suit un protocole simple pour activer la gestion de l’alimentation au niveau des composants. Lorsque le pilote doit accéder à un composant, le pilote appelle la routine PoFxActivateComponent pour demander l’accès au composant. Si le composant est dans un état Fx à faible puissance lorsque cet appel se produit, PoFx lance une transition vers l’état F0 et avertit le pilote quand cette transition est terminée. Le pilote peut ensuite accéder au composant. Lorsque le pilote n’a plus besoin d’accéder au composant, le pilote appelle la routine PoFxIdleComponent pour notifier PoFx. En réponse à cet appel, PoFx peut potentiellement basculer le composant vers un état Fx à faible puissance.
Un composant accessible se trouve dans la condition active. Un composant inaccessible est dans la condition inactive. Pour suivre l’accessibilité des composants d’un appareil, PoFx conserve un nombre de références d’activation sur chaque composant. Un appel PoFxActivateComponent incrémente le nombre sur le composant spécifié par un, et un appel PoFxIdleComponent décrémente le nombre par un.
Si un appel PoFxActivateComponent incrémente le nombre de zéro à un, PoFx lance une transition de la condition inactive à la condition active et avertit le pilote une fois cette transition terminée. Si un PoFxActivateComponent se produit lorsque le composant est déjà dans la condition active, le composant reste dans la condition active et le pilote ne reçoit aucune notification.
Si un appel PoFxIdleComponent décrémente le nombre d’un à zéro, PoFx lance une transition de la condition active à la condition inactive et avertit le pilote lorsque cette transition est terminée. Si un appel PoFxIdleComponent décrémente le nombre, mais que le nombre reste différent de zéro, le composant reste dans la condition active et le pilote ne reçoit aucune notification.
Le compteur de références d’activation gère facilement les situations dans lesquelles deux chemins de code ou plus dans le même pilote peuvent nécessiter un accès simultané au même composant dans un dispositif. En conservant ce nombre, PoFx permet aux différentes parties du pilote de maintenir indépendamment l’accès au composant sans demander au pilote de gérer de manière centralisée l’accès au composant.
La condition active/inactive d’un composant est le seul moyen fiable pour un pilote de déterminer si un composant est accessible. Un composant qui est dans l’état d’alimentation F0, mais qui est dans la condition inactive peut être sur le point de basculer vers un état Fx à faible alimentation.
Un composant qui se trouve dans la condition active est toujours dans l’état F0. Le composant ne peut pas quitter F0 tant qu’il n’entre pas dans la condition inactive. Un composant qui se trouve dans la condition inactive peut être en F0 ou dans un état Fx à faible puissance. Si un composant est dans un état Fx à faible puissance lorsqu’un appel PoFxActivateComponent lance une transition de la condition inactive à la condition active, PoFx doit d’abord basculer le composant vers F0 avant que le composant puisse entrer dans la condition active.
Rubriques connexes
Informations de référence sur la gestion de l’alimentation des appareils