Freigeben über


Referenz zur Geräte-Energieverwaltung

Treiber können ihre Gerätehardware in mehrere logische Komponenten unterteilen, um eine detaillierte Energieverwaltung zu ermöglichen. Eine Komponente verfügt über eine Reihe von Energiezuständen, die unabhängig von den Energiezuständen anderer Komponenten desselben Geräts verwaltet werden können. Im Zustand F0 ist die Komponente vollständig eingeschaltet. Die Komponente kann zusätzliche, energiesparende Zustände F1, F2 und so weiter unterstützen.

Der Besitzer der Richtlinie für den Energieverbrauch eines Geräts ist normalerweise der Funktionstreiber des Geräts. Um die Energieverwaltung auf Komponentenebene zu ermöglichen, registriert dieser Treiber das Gerät beim Power Management Framework (PoFx). Durch die Registrierung des Geräts übernimmt der Treiber die Verantwortung dafür, PoFx darüber zu informieren, wann eine Komponente aktiv genutzt wird und wann sie sich im Leerlauf befindet. PoFx trifft intelligente Entscheidungen über den Idle-Status des Geräts auf der Grundlage von Informationen über die Aktivität der Komponente, die Latenztoleranz, die erwartete Idle-Dauer und die Anforderungen an das Aufwachen. Durch die Kontrolle der Energienutzung auf Komponentenebene kann PoFx die Anforderungen an den Stromverbrauch reduzieren und gleichzeitig die Reaktionsfähigkeit des Systems erhalten. Weitere Informationen finden Sie unter Energieverwaltung auf Komponentenebene.

Routinen für die Energieverwaltung von Geräten

Diese Routinen werden vom Power Management Framework (PoFx) implementiert, um die Energieverwaltung von Geräten zu ermöglichen. Diese Routinen werden von dem Treiber aufgerufen, der der Besitzer der Energierichtlinie (PPO) für ein Gerät ist. In der Regel ist der Funktionstreiber für ein Gerät der PPO für dieses Gerät.

Thema Beschreibung
PoFxActivateComponent Die Routine PoFxActivateComponent erhöht die Anzahl der Aktivierungsreferenzen für die angegebene Komponente.
PoFxCompleteDevicePowerNotRequired Die Routine PoFxCompleteDevicePowerNotRequired teilt dem Power Management Framework (PoFx) mit, dass der aufrufende Treiber seine Antwort auf einen Aufruf der DevicePowerNotRequiredCallback Callback-Routine des Treibers abgeschlossen hat.
PoFxCompleteIdleCondition Die Routine PoFxCompleteIdleCondition informiert das Power Management Framework (PoFx), dass die angegebene Komponente eine anstehende Änderung des Leerlaufzustands abgeschlossen hat.
PoFxCompleteIdleState Die Routine PoFxCompleteIdleState informiert das Power Management Framework (PoFx), dass die angegebene Komponente einen anstehenden Wechsel in einen Fx-Zustand abgeschlossen hat.
PoFxIdleComponent Die Routine PoFxIdleComponent dekrementiert die Anzahl der Aktivierungsreferenzen der angegebenen Komponente.
PoFxIssueComponentPerfStateChange Die Routine PoFxIssueComponentPerfStateChange sendet eine Anfrage, um eine Gerätekomponente in einen bestimmten Leistungsstatus zu versetzen.
PoFxIssueComponentPerfStateChangeMultiple Die Routine PoFxIssueComponentPerfStateChangeMultiple sendet eine Anfrage, um die Leistungszustände in mehreren Leistungszustandssätzen gleichzeitig für eine Gerätekomponente zu ändern.
PoFxNotifySurprisePowerOn Die Routine PoFxNotifySurprisePowerOn benachrichtigt das Power Management Framework (PoFx), dass ein Gerät als Nebeneffekt der Stromversorgung eines anderen Geräts eingeschaltet wurde.
PoFxPowerControl Die Routine PoFxPowerControl sendet eine Anfrage zur Energieversorgung an das Power Management Framework (PoFx).
PoFxQueryCurrentComponentPerfState Die Routine PoFxQueryCurrentComponentPerfState ruft den aktiven Leistungszustand im Leistungszustandsset einer Komponente ab.
PoFxRegisterComponentPerfStates Die Routine PoFxRegisterComponentPerfStates registriert eine Gerätekomponente für die Verwaltung des Leistungsstatus durch das Power Management Framework (PoFx).
PoFxRegisterDevice Die Routine PoFxRegisterDevice registriert ein Gerät beim Power Management Framework (PoFx).
PoFxReportDevicePoweredOn Die Routine PoFxReportDevicePoweredOn meldet dem Power Management Framework (PoFx), dass das Gerät den angeforderten Wechsel in den Leistungszustand D0 (vollständig eingeschaltet) vollzogen hat.
PoFxSetComponentLatency Die Routine PoFxSetComponentLatency gibt die maximale Latenzzeit an, die beim Wechsel vom Ruhezustand in den aktiven Zustand in der angegebenen Komponente toleriert werden kann.
PoFxSetComponentResidency Die Routine PoFxSetComponentResidency legt die geschätzte Zeit fest, wie lange eine Komponente voraussichtlich im Idle-Zustand verbleibt, nachdem die Komponente in den Idle-Zustand übergegangen ist.
PoFxSetComponentWake Die Routine PoFxSetComponentWake gibt an, ob der Treiber die angegebene Komponente aufwecken soll, wenn die Komponente in den Ruhezustand übergeht.
PoFxSetDeviceIdleTimeout Die Routine PoFxSetDeviceIdleTimeout gibt das minimale Zeitintervall zwischen dem Eintritt der letzten Komponente des Geräts in den Ruhezustand und dem Zeitpunkt an, zu dem das Power Management Framework (PoFx) die DevicePowerNotRequiredCallback Callback-Routine des Treibers aufruft.
PoFxStartDevicePowerManagement Die Routine PoFxStartDevicePowerManagement schließt die Registrierung eines Geräts beim Power Management Framework (PoFx) ab und startet die Energieverwaltung des Geräts.
PoFxUnregisterDevice Die Routine PoFxUnregisterDevice entfernt die Registrierung eines Geräts aus dem Power Management Framework (PoFx).

Callbacks für die Energieverwaltung von Geräten

Diese Callback-Routinen werden vom Power Management Framework (PoFx) angefordert, um die Energieverwaltung von Geräten zu ermöglichen. Der Treiber, der der Besitzer der Richtlinie für die Stromversorgung des Geräts ist, implementiert diese Callback-Routinen. PoFx ruft diese Routinen auf, um die Energiezustände der Komponenten im Gerät abzufragen und zu konfigurieren.

Thema Beschreibung
ComponentActiveConditionCallback Die ComponentActiveConditionCallback-Callback-Routine benachrichtigt den Treiber, dass die angegebene Komponente einen Wechsel vom Idle-Status in den Aktiv-Status vollzogen hat.
ComponentIdleConditionCallback Die Callback-Routine ComponentIdleConditionCallback benachrichtigt den Treiber, dass die angegebene Komponente einen Wechsel vom Aktiv- zum Idle-Status vollzogen hat.
ComponentIdleStateCallback Die ComponentIdleStateCallback-Callback-Routine benachrichtigt den Treiber über eine anstehende Änderung des Fx-Leistungszustands der angegebenen Komponente.
ComponentPerfStateCallback Die ComponentPerfStateCallback-Callback-Routine benachrichtigt den Treiber, dass seine Anfrage zur Änderung des Leistungszustands einer Komponente abgeschlossen ist.
DevicePowerNotRequiredCallback Die Callback-Routine DevicePowerNotRequiredCallback teilt dem Gerätetreiber mit, dass es nicht erforderlich ist, dass das Gerät im Leistungszustand D0 bleibt.
DevicePowerRequiredCallback Die Callback-Routine DevicePowerRequiredCallback teilt dem Gerätetreiber mit, dass das Gerät in den D0- Energiezustand eintreten und darin verbleiben muss.
PowerControlCallback Die Callback-Routine PowerControlCallback führt einen Vorgang zur Steuerung der Energieversorgung aus, der vom Power Management Framework (PoFx) angefordert wird.

Strukturen für die Energieverwaltung von Geräten

Das Power Management Framework (PoFx) definiert diese Strukturen, um die Geräteverwaltung zu unterstützen.

Thema Beschreibung
PO_FX_COMPONENT_V1 PO_FX_COMPONENT_V2 Die Struktur PO_FX_COMPONENT beschreibt die Energiezustandsattribute einer Komponente in einem Gerät.
PO_FX_COMPONENT_IDLE_STATE Die Struktur PO_FX_COMPONENT_IDLE_STATE beschreibt die Attribute eines Fx-Energiezustands einer Komponente in einem Gerät.
PO_FX_COMPONENT_PERF_INFO Die Struktur PO_FX_COMPONENT_PERF_INFO beschreibt alle Sätze von Leistungszuständen für eine einzelne Komponente in einem Gerät.
PO_FX_COMPONENT_PERF_SET Die Struktur PO_FX_COMPONENT_PERF_SET stellt einen Satz von Leistungszuständen für eine einzelne Komponente innerhalb eines Geräts dar.
PO_FX_DEVICE_V1 PO_FX_DEVICE_V2 PO_FX_DEVICE_V3 Die Struktur PO_FX_DEVICE beschreibt die Leistungsattribute eines Geräts für das Power Management Framework (PoFx).
PO_FX_PERF_STATE Die Struktur PO_FX_PERF_STATE repräsentiert einen Leistungsstatus für eine einzelne Komponente innerhalb eines Geräts.
PO_FX_PERF_STATE_CHANGE Die PO_FX_PERF_STATE_CHANGE-Struktur enthält Informationen über eine Änderung eines Leistungsstatus, die durch den Aufruf der PoFxIssueComponentPerfStateChange- oder PoFxIssueComponentPerfStateChangeMultiple-Routine angefordert wird.

Auflistungen für die Energieverwaltung von Geräten

Das Power Management Framework (PoFx) definiert diese Auflistungen, um die Geräteverwaltung zu unterstützen.

Thema Beschreibung
PO_FX_PERF_STATE_TYPE Die PO_FX_PERF_STATE_TYPE-Auflistung enthält Werte, die die Art der Leistungszustände in einem PO_FX_COMPONENT_PERF_SET beschreiben.
PO_FX_PERF_STATE_UNIT Die Auflistung PO_FX_PERF_STATE_UNIT enthält Werte, die den Typ der Einheit beschreiben, die von den Leistungszuständen in einem PO_FX_COMPONENT_PERF_SET gesteuert wird.

Konstanten für die Energieverwaltung von Geräten

PO_FX_FLAG_XXX-Flag-Bits

Bei den PO_FX_FLAG_XXX-Konstanten handelt es sich um Flag-Bits, die anzeigen, ob eine Anfrage zur Änderung des Zustands einer Komponente synchron oder asynchron ausgeführt wird.

#define PO_FX_FLAG_BLOCKING   0x1
#define PO_FX_FLAG_ASYNC_ONLY 0x2

PO_FX_FLAG_XXX-Konstanten

Konstante Beschreibung
PO_FX_FLAG_BLOCKING Macht die Zustandsänderung synchron. Wenn dieses Flag gesetzt ist, gibt die Routine, die die Zustandsänderung anfordert, die Kontrolle erst dann an den aufrufenden Treiber zurück, wenn die Hardware der Komponente den Wechsel zum neuen Zustand abgeschlossen hat. Dieses Flag kann nur verwendet werden, wenn der Aufrufer mit IRQL < DISPATCH_LEVEL ausgeführt wird.
PO_FX_FLAG_ASYNC_ONLY Macht die Bedingungsänderung vollständig asynchron. Wenn dieses Flag auf gesetzt ist, wird die Callback-Routine des aufrufenden Treibers von einem anderen Thread aus aufgerufen als die Routine, die die Bedingungsänderung anfordert. Daher kehrt die Routine, die die Bedingungsänderung anfordert, immer asynchron zurück, ohne auf den Abschluss des Callbacks zu warten.

PO_FX_FLAG_XXX-Bemerkungen

Der Parameter Flags der folgenden Routinen kann auf eine Konstante PO_FX_FLAG_XXX festgelegt werden:

Die Flag-Bits PO_FX_FLAG_BLOCKING und PO_FX_FLAG_ASYNC_ONLY schließen sich gegenseitig aus. Der Aufrufer kann das eine oder das andere Flag-Bit im Parameter Flags festlegen, aber nicht beide Flag-Bits.

PO_FX_FLAG_XXX-Anforderungen

Version Header
Wird ab Windows 8 unterstützt. Wdm.h

PO_FX_FLAG_PERF_XXX-Flag-Bits

Bei den PO_FX_FLAG_PERF_XXX-Konstanten handelt es sich um Flag-Bits, die definieren, wie das Power Management Framework (PoFx) Leistungszustände für eine Gerätekomponente verwaltet.

#define PO_FX_FLAG_PERF_PEP_OPTIONAL   0x1
#define PO_FX_FLAG_PERF_QUERY_ON_F0 0x2
#define PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 0x4
Konstante Wert Beschreibung
PO_FX_FLAG_PERF_PEP_OPTIONAL 1 (0x1) Zeigt an, dass der Treiber den Leistungsstatus ohne Unterstützung durch das Plattform-Erweiterungs-Plugin (PEP) ändern kann oder dass der Treiber den Leistungsstatus nur zu Protokollierungszwecken bei PoFx registriert. Wenn dieses Flag festgelegt ist, ist der Aufruf PoFxRegisterComponentPerfStates auch dann erfolgreich, wenn das PEP keine Leistungszustände für die Komponente unterstützt.
PO_FX_FLAG_PERF_QUERY_ON_F0 2 (0x2) Bei einigen Geräten muss der PEP möglicherweise einen für eine Komponente festgelegten Leistungsstatus in einen bestimmten Leistungsstatus (bekannt als Nominal-Leistungsstatus) versetzen, wenn er die Komponente in den Leerlauf versetzt. Treiber setzen dieses Flag, wenn die Komponente nominale Leistungszustände enthält. In diesem Fall fragt PoFx den PEP ab, um den aktuellen Leistungszustand zu bestimmen, wenn die Komponente nach F0 wechselt.
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 4 (0x4) Bei einigen Geräten muss der PEP möglicherweise einen für eine Komponente festgelegten Leistungsstatus in einen bestimmten Leistungsstatus (bekannt als Nominal-Leistungsstatus) setzen, wenn er die Komponente zwischen Idle-Status wechselt. Treiber setzen dieses Flag, wenn diese Komponente nominale Leistungszustände enthält. In diesem Fall fragt PoFx den PEP ab, um den aktuellen Leistungszustand zu bestimmen, wenn die Komponente zwischen Idle-Status wechselt.

PO_FX_FLAG_PERF_XXX-Bemerkungen

Der Parameter Flags der Routine PoFxRegisterComponentPerfStates kann auf eine Konstante PO_FX_FLAG_PERF_XXX festgelegt werden.

PO_FX_FLAG_PERF_XXX-Anforderungen

Anforderungen Version
Wird ab Windows 10 unterstützt. Wdm.h