Fonction PoFxIssueComponentPerfStateChange (wdm.h)
La routine PoFxIssueComponentPerfStateChange envoie une demande pour placer un composant d’appareil dans un état de performances particulier.
Syntaxe
void PoFxIssueComponentPerfStateChange(
[in] POHANDLE Handle,
[in] ULONG Flags,
[in] ULONG Component,
[in] PPO_FX_PERF_STATE_CHANGE PerfChange,
[in] PVOID Context
);
Paramètres
[in] Handle
Handle qui représente l’inscription de l’appareil auprès de PoFx. Le pilote de périphérique a précédemment reçu ce handle de la routine PoFxRegisterDevice .
[in] Flags
Indicateurs qui modifient le comportement de l’opération de modification de l’état des performances. Définissez ce membre sur zéro ou sur l’un des indicateurs suivants PO_FX_FLAG_XXX bits :
Ces deux bits d’indicateur s’excluent mutuellement. Pour plus d'informations, consultez la section Notes.
[in] Component
Index qui identifie le composant. Ce paramètre est un index dans le tableau Components de la structure PO_FX_DEVICE que le pilote de périphérique a utilisé pour inscrire l’appareil auprès de PoFx. Si le tableau Components contient N éléments, les index de composant vont de 0 à N–1.
[in] PerfChange
Pointeur vers une structure PO_FX_PERF_STATE_CHANGE qui représente le nouvel état de performances du composant.
[in] Context
Pointeur vers le contexte de la routine de rappel ComponentPerfStateCallback . Ce paramètre est facultatif. Il est fourni afin qu’un contexte de pilote ou de périphérique puisse être passé à la routine de rappel. Si ce paramètre n’est pas utilisé, il doit être défini sur NULL.
Valeur de retour
None
Remarques
Lorsqu’un pilote appelle PoFxIssueComponentPerfStateChange, l’infrastructure de gestion de l’alimentation (PoFx) demande au plug-in d’extension de plateforme (PEP) de placer l’état des performances du composant défini dans l’état de performances spécifié. Cette routine peut être utilisée avec des types d’états de performances discrets et basés sur une plage. Pour plus d’informations sur les ensembles d’états de performances discrets et basés sur la plage, consultez PO_FX_PERF_STATE_TYPE.
Si les = indicateurs PO_FX_FLAG_BLOCKING, l’appel PoFxIssueComponentPerfStateChange est synchrone. Dans ce cas, PoFxIssueComponentPerfStateChange attend de retourner jusqu’à ce que le composant termine la transition de l’état des performances. La routine ComponentPerfStateCallback du pilote est appelée pour informer le pilote que le changement d’état des performances du composant est terminé. Ce rappel se produit dans le même thread que l’appel à PoFxIssueComponentPerfStateChange, et PoFxIssueComponentPerfStateChange retourne uniquement après le retour du rappel ComponentPerfStateCallback .
Si les = indicateurs PO_FX_FLAG_ASYNC_ONLY, l’appel PoFxIssueComponentPerfStateChange est asynchrone. Dans ce cas, PoFxIssueComponentPerfStateChange planifie la routine ComponentPerfStateCallback dans un autre thread, puis retourne sans attendre que le rappel se produise. Le rappel peut se produire avant ou après le retour de PoFxIssueComponentPerfStateChange . Le pilote doit s’appuyer sur la routine ComponentPerfStateCallback pour déterminer quand le composant termine la transition vers le nouvel état de performances.
Le pilote peut définir Flags = 0 pour indiquer qu’il ne se soucie pas de savoir si l’appel PoFxIssueComponentPerfStateChange est synchrone ou asynchrone. Dans ce cas, PoFx détermine la synchronicité de l’appel en fonction de l’utilisation ou non d’une requête synchrone ou asynchrone pour émettre la modification de l’état de performances du composant.
Si des = indicateursPO_FX_FLAG_ASYNC_ONLY ou aucun indicateur n’est passé, cette routine nécessite un IRQL de <= DISPATCH_LEVEL. Si les = indicateurs PO_FX_FLAG_BLOCKING, cette routine nécessite un IRQL de <= APC_LEVEL.
Cette fonction entraîne toujours un appel à la routine ComponentPerfStateCallback , quelle que soit la synchronicité de l’appel. Étant donné que le peps peut choisir de refuser la demande de modification de l’état des performances, le pilote doit attendre la réception du rappel avant de valider l’état des performances sur le matériel.
Un seul appel de la routine PoFxIssueComponentPerfStateChange est autorisé à la fois par composant, que l’appel soit synchrone ou asynchrone. Après avoir émis une demande de modification de l’état des performances, le pilote doit attendre la réception de ComponentPerfStateCallback avant d’appeler à nouveau cette routine, même si la demande implique un jeu d’état de performances différent. Si cette routine est appelée à nouveau avant d’attendre la réception de ComponentPerfStateCallback , une vérification d’erreur se produit.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 10. |
Plateforme cible | Universal |
En-tête | wdm.h |
Bibliothèque | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= APC_LEVEL ou <= DISPATCH_LEVEL (voir la section Remarques) |
Voir aussi
Gestion de l’état des performances des appareils