Fonction PoFxIssueComponentPerfStateChangeMultiple (wdm.h)

La routine PoFxIssueComponentPerfStateChangeMultiple envoie une demande de modification des états de performances dans plusieurs jeux d’états de performances simultanément pour un composant d’appareil.

Syntaxe

void PoFxIssueComponentPerfStateChangeMultiple(
  [in] POHANDLE                   Handle,
  [in] ULONG                      Flags,
  [in] ULONG                      Component,
  [in] ULONG                      PerfChangesCount,
  [in] PO_FX_PERF_STATE_CHANGE [] PerfChanges,
  [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 déjà 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_ bitsXXX :

Ces deux bits d’indicateur s’excluent mutuellement. Pour plus d'informations, consultez la section Notes.

Valeur Signification
PO_FX_FLAG_BLOCKING
0x1
Rendez la modification de condition synchrone. Si cet indicateur est défini, la routine qui demande la modification de condition ne retourne pas le contrôle au pilote appelant tant que le matériel du composant n’a pas terminé la transition vers la nouvelle condition. Cet indicateur ne peut être utilisé que si l’appelant est en cours d’exécution à l'< DISPATCH_LEVEL IRQL.
PO_FX_FLAG_ASYNC_ONLY
0x2
Rendez la modification de condition entièrement asynchrone. Si cet indicateur est défini, la routine de rappel du pilote appelant est appelée à partir d’un thread autre que le thread dans lequel la routine qui demande la modification de condition est appelée. Ainsi, la routine qui demande la modification de la condition retourne toujours de manière asynchrone sans attendre que le rappel se termine.

[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 Composants contient N éléments, les index des composants vont de 0 à N–1.

[in] PerfChangesCount

Nombre de demandes de modification de l’état des performances contenues dans le tableau PerfChanges .

[in] PerfChanges

Le premier élément d’un tableau de structures PO_FX_PERF_STATE_CHANGE qui représentent les états de performances vers lesquels le pilote a l’intention de passer. Chaque élément de tableau représente une seule demande de modification de l’état des performances.

[in] Context

Pointeur vers le contexte de la routine de rappel ComponentPerfStateCallback . Ce paramètre est facultatif. Il est fourni pour qu’un pilote ou un contexte d’appareil 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

Un pilote appelle PoFxIssueComponentPerfStateChangeMultiple. L’infrastructure de gestion de l’alimentation (PoFx) demande au plug-in d’extension de plateforme (PEP) de placer les jeux d’état de performances du composant dans les états de performances spécifiés. 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 jeux d’états de performances discrets et basés sur la plage, consultez PO_FX_PERF_STATE_TYPE.

Si les = indicateursPO_FX_FLAG_BLOCKING, l’appel PoFxIssueComponentPerfStateChangeMultiple est synchrone. Dans ce cas, PoFxIssueComponentPerfStateChangeMultiple attend 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 à PoFxIssueComponentPerfStateChangeMultiple, et PoFxIssueComponentPerfStateChangeMultiple retourne uniquement après le retour du rappel ComponentPerfStateCallback .

Si les = indicateurs PO_FX_FLAG_ASYNC_ONLY, l’appel PoFxIssueComponentPerfStateChangeMultiple est asynchrone. Dans ce cas, PoFxIssueComponentPerfStateChangeMultiple 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 les retours PoFxIssueComponentPerfStateChangeMultiple . 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 PoFxIssueComponentPerfStateChangeMultiple est synchrone ou asynchrone. Dans ce cas, PoFx décide de 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 des performances du composant.

Si des = indicateursPO_FX_FLAG_ASYNC_ONLY ou aucun indicateur n’est transmis, cette routine nécessite un IRQL de <= DISPATCH_LEVEL. Si les = indicateursPO_FX_FLAG_BLOCKING, cette routine nécessite une valeur 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 PEP peut choisir de refuser la demande de modification des états de performances, le pilote doit attendre la réception du rappel avant de valider les états de performances sur le matériel.

Un seul appel de la routine PoFxIssueComponentPerfStateChangeMultiple 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 que le ComponentPerfStateCallback soit reçu avant d’appeler à nouveau cette routine, même si la demande implique un autre jeu d’états de performances. Si cette routine est appelée à nouveau avant d’attendre que le ComponentPerfStateCallback soit reçu, une vérification de bogue 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

ComponentPerfStateCallback

Gestion de l’état des performances des appareils

PO_FX_PERF_STATE_TYPE

PoFxIssueComponentPerfStateChange

PoFxRegisterComponentPerfStates