structure PO_FX_COMPONENT_V1 (wdm.h)

La structure PO_FX_COMPONENT décrit les attributs d’état d’alimentation d’un composant dans un appareil.

Syntaxe

typedef struct _PO_FX_COMPONENT_V1 {
  GUID                        Id;
  ULONG                       IdleStateCount;
  ULONG                       DeepestWakeableIdleState;
  PPO_FX_COMPONENT_IDLE_STATE IdleStates;
} PO_FX_COMPONENT_V1, *PPO_FX_COMPONENT_V1;

Membres

Id

ID de composant qui identifie de manière unique ce composant par rapport aux autres composants de l’appareil. Le pilote doit spécifier une valeur différente de zéro pour ce membre si l’infrastructure de gestion de l’alimentation (PoFx) nécessite un ID de composant pour distinguer ce composant d’autres composants similaires dans le même appareil. Ce membre est facultatif. Si ce membre n’est pas utilisé, il doit être défini sur tous les zéros.

IdleStateCount

Nombre d’éléments dans le tableau vers lequel pointe le membre IdleStates . En outre, ce membre spécifie le nombre d’états d’alimentation Fx pris en charge par le composant. Un composant doit prendre en charge au moins un état Fx (F0).

DeepestWakeableIdleState

Index de l’état Fx le plus profond à partir duquel le composant peut se réveiller. Spécifiez 0 pour F0, 1 pour F1, et ainsi de suite. Cet index doit être inférieur à IdleStateCount.

IdleStates

Pointeur vers un tableau PO_FX_COMPONENT_IDLE_STATE . La longueur de ce tableau est spécifiée par le membre IdleStateCount . Chaque élément de tableau spécifie les attributs d’un état d’alimentation Fx pris en charge par le composant. L’élément 0 décrit F0, l’élément 1 décrit F1, et ainsi de suite.

Remarques

Lorsqu’un pilote de périphérique inscrit un appareil auprès de PoFx, il fournit une structure PO_FX_DEVICE qui contient les informations d’inscription. Cette structure contient un tableau de structures PO_FX_COMPONENT . Les éléments de ce tableau décrivent les attributs de puissance des composants individuels de l’appareil. PoFx utilise les informations de ce tableau pour gérer les paramètres d’alimentation de ces composants.

Le membre ID contient un ID de composant que PoFx peut utiliser pour identifier un composant de manière unique. Ne confondez pas l’ID du composant avec l’index du composant, qu’une routine telle que PoFxActivateComponent utilise pour identifier un composant dans un appareil inscrit. Un index de composant est un index dans le tableau Composants de la structure PO_FX_DEVICE que le pilote de périphérique a utilisée pour inscrire l’appareil auprès de PoFx. Si le tableau Components contient N éléments, les index de composants sont des valeurs entières comprises entre 0 et N–1. En revanche, un ID de composant est une valeur GUID.

Le membre Flags peut être défini sur la valeur PO_FX_COMPONENT_FLAG_F0_ON_DX si le pilote a spécifié la prise en charge de PO_FX_VERSION_V2 lors de l’inscription auprès de PoFx (autrement dit, pendant l’appel à la routine PoFxRegisterDevice , le pilote a spécifié la valeur PO_FX_VERSION_V2 pour le membre Version de la structure PO_FX_DEVICE qui a été passée au paramètre Device ). Si l’indicateur PO_FX_COMPONENT_FLAG_F0_ON_DX est spécifié, PoFx place le composant dans l’état d’alimentation F0 pendant les transitions Dx et pour les IIP d’attente/veille. Avant de distribuer un IRP Dx ou un IRP d’attente/veille à la pile des appareils (quel que soit l’événement qui se produit en premier), le gestionnaire d’alimentation fait passer le composant à l’état F0. Le composant est conservé en F0 jusqu’à ce que l’IRP de veille/attente soit annulé ou terminé, ou jusqu’à ce que l’IRP Dx soit terminé et que le pilote ait appelé la routine PoFxReportDevicePoweredOn (quel que soit l’événement qui se produit en dernier).

Dépendances de composant

PoFx prend en charge les dépendances de composants logiques au sein d’un appareil (mais pas sur différents appareils). Lors de l’inscription de l’appareil pour chaque composant, le pilote peut fournir un nombre (le membre ProviderCount ) et un tableau d’index de composant (le membre Providers ) dont dépend ce composant ; ces derniers sont appelés fournisseurs. PoFx garantit que le composant ne deviendra pas actif tant que tous ses fournisseurs ne seront pas actifs.

Les dépendances de composant forment un graphique dirigé où une arête pointe d’un composant dépendant vers un fournisseur et représente une dépendance. Lors de l’inscription de l’appareil, PoFx valide les graphe des dépendances : les cycles et les arêtes répétées ne sont pas autorisés et la profondeur du graphique pour la traversée de recherche en profondeur ne peut pas dépasser quatre. PoFx définit également le nombre de références actives des composants en fonction de la graphe des dépendances ; autrement dit, le nombre de références actives de chaque fournisseur est incrémenté une fois pour chaque composant qui en dépend.

Pendant l’activation du composant, PoFx active en premier de manière asynchrone tous les fournisseurs. Une fois qu’un composant est actif, PoFx vérifie chaque composant dépendant et continue son activation si nécessaire.

Lorsque le composant passe à l’état inactif, PoFx rend d’abord les composants dépendants inactifs. Une fois que le pilote a terminé le ComponentIdleConditionCallback et que le plug-in d’extension de plateforme (PEP) est averti que le composant est inactif, PoFx traverse de manière récursive le graphe des dépendances dans la traversée en largeur d’abord et inactif de manière asynchrone chaque fournisseur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge à partir de Windows 8.
En-tête wdm.h (inclure Wudfwdm.h)

Voir aussi

Gestion de l’alimentation au niveau des composants

PO_FX_COMPONENT_IDLE_STATE

PO_FX_DEVICE