PoFxIssueComponentPerfStateChange-Funktion (wdm.h)
Die PoFxIssueComponentPerfStateChange-Routine sendet eine Anforderung, um eine Gerätekomponente in einen bestimmten Leistungszustand zu versetzen.
Syntax
void PoFxIssueComponentPerfStateChange(
[in] POHANDLE Handle,
[in] ULONG Flags,
[in] ULONG Component,
[in] PPO_FX_PERF_STATE_CHANGE PerfChange,
[in] PVOID Context
);
Parameter
[in] Handle
Ein Handle, das die Registrierung des Geräts bei PoFx darstellt. Der Gerätetreiber hat dieses Handle zuvor von der PoFxRegisterDevice-Routine erhalten.
[in] Flags
Die Flags, die das Verhalten des Leistungszustandsänderungsvorgangs ändern. Legen Sie dieses Element auf null oder auf eines der folgenden Flags PO_FX_FLAG_XXX-Bits fest:
Diese beiden Flagbits schließen sich gegenseitig aus. Weitere Informationen finden Sie in den Hinweisen.
[in] Component
Der Index, der die Komponente identifiziert. Dieser Parameter ist ein Index im Komponentenarray in der PO_FX_DEVICE Struktur, die der Gerätetreiber zum Registrieren des Geräts bei PoFx verwendet hat. Wenn das Komponentenarray N-Elemente enthält, reichen die Komponentenindizes von 0 bis N–1.
[in] PerfChange
Ein Zeiger auf eine PO_FX_PERF_STATE_CHANGE-Struktur , die den neuen Leistungszustand der Komponente darstellt.
[in] Context
Ein Zeiger auf den Kontext für die Rückrufroutine ComponentPerfStateCallback . Dieser Parameter ist optional. Sie wird bereitgestellt, damit ein Treiber- oder Gerätekontext an die Rückrufroutine übergeben werden kann. Wenn dieser Parameter nicht verwendet wird, muss er auf NULL festgelegt werden.
Rückgabewert
Keine
Bemerkungen
Wenn ein Treiber PoFxIssueComponentPerfStateChange aufruft, fordert das Power Management Framework (PoFx) das Plattformerweiterungs-Plug-In (PEP) an, den Leistungszustand der Komponente in den angegebenen Leistungszustand zu versetzen. Diese Routine kann sowohl mit diskreten als auch mit bereichsbasierten Typen von Leistungszustandssätzen verwendet werden. Weitere Informationen zu diskreten und bereichsbasierten Leistungszustandssätzen finden Sie unter PO_FX_PERF_STATE_TYPE.
Wenn Flags = PO_FX_FLAG_BLOCKING, ist der PoFxIssueComponentPerfStateChange-Aufruf synchron. In diesem Fall wartet PoFxIssueComponentPerfStateChange auf die Rückgabe, bis die Komponente den Leistungszustandsübergang abgeschlossen hat. Die ComponentPerfStateCallback-Routine des Treibers wird aufgerufen, um den Treiber darüber zu informieren, dass die Leistungszustandsänderung der Komponente abgeschlossen ist. Dieser Rückruf erfolgt im selben Thread wie der Aufruf von PoFxIssueComponentPerfStateChange, und PoFxIssueComponentPerfStateChange gibt erst zurück, nachdem der ComponentPerfStateCallback-Rückruf zurückgegeben wurde.
Wenn Flags = PO_FX_FLAG_ASYNC_ONLY, ist der PoFxIssueComponentPerfStateChange-Aufruf asynchron. In diesem Fall plant PoFxIssueComponentPerfStateChange das Auftreten der ComponentPerfStateCallback-Routine in einem anderen Thread und gibt dann zurück, ohne auf den Rückruf zu warten. Der Rückruf kann vor oder nach der Rückgabe von PoFxIssueComponentPerfStateChange erfolgen. Der Treiber sollte sich auf die ComponentPerfStateCallback-Routine verlassen, um zu bestimmen, wann die Komponente den Übergang zum neuen Leistungszustand abgeschlossen hat.
Der Treiber kann Flags = 0 festlegen, um anzugeben, dass es nicht wichtig ist, ob der PoFxIssueComponentPerfStateChange-Aufruf synchron oder asynchron ist. In diesem Fall entscheidet PoFx die Synchronität des Aufrufs basierend darauf, ob pep eine synchrone oder asynchrone Anforderung verwendet, um die Leistungszustandsänderung an die Komponente auszusprechen.
Wenn Flags = PO_FX_FLAG_ASYNC_ONLY oder keine Flags übergeben werden, erfordert diese Routine eine IRQL von <= DISPATCH_LEVEL. Wenn Flags = PO_FX_FLAG_BLOCKING, erfordert diese Routine einen IRQL von <= APC_LEVEL.
Diese Funktion führt immer zu einem Aufruf der ComponentPerfStateCallback-Routine , unabhängig von der Synchronität des Aufrufs. Da pep die Anforderung zum Ändern des Leistungszustands ablehnen kann, muss der Treiber warten, bis der Rückruf empfangen wird, bevor er den Leistungszustand an die Hardware committen kann.
Nur ein einzelner Aufruf der PoFxIssueComponentPerfStateChange-Routine ist zu einem Zeitpunkt pro Komponente zulässig, unabhängig davon, ob der Aufruf synchron oder asynchron ist. Nach dem Ausgeben einer Leistungszustandsänderungsanforderung muss der Treiber warten, bis componentPerfStateCallback empfangen wird, bevor er diese Routine erneut aufruft, auch wenn die Anforderung einen anderen Leistungszustandssatz umfasst. Wenn diese Routine erneut aufgerufen wird, bevor gewartet wird, bis das ComponentPerfStateCallback empfangen wird, wird eine Fehlerüberprüfung durchgeführt.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Ab Windows 10 verfügbar. |
Zielplattform | Universell |
Header | wdm.h |
Bibliothek | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= APC_LEVEL oder <= DISPATCH_LEVEL (siehe Abschnitt "Hinweise") |
Weitere Informationen
Geräteleistungsstatusverwaltung