Freigeben über


WdfDeviceGetSystemPowerAction-Funktion (wdfdevice.h)

[Gilt für KMDF und UMDF]

Die WdfDeviceGetSystemPowerAction-Methode gibt die Systemleistungsaktion zurück, sofern vorhanden, die derzeit für den Computer ausgeführt wird.

Syntax

POWER_ACTION WdfDeviceGetSystemPowerAction(
  [in] WDFDEVICE Device
);

Parameter

[in] Device

Ein Handle für ein Framework-Geräteobjekt.

Rückgabewert

WdfDeviceGetSystemPowerAction gibt einen POWER_ACTION typisierten Enumeratorwert zurück. Der Wert gibt die Systemleistungsaktion an, die derzeit für den Computer ausgeführt wird. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise". Die POWER_ACTION-Enumeration ist in wdm.h definiert.

Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

Hinweise

Ab WDF-Version 1.31/2.31 (als "v31" bezeichnet) wurde WdfDeviceGetSystemPowerAction aktualisiert, um die Systemleistungsaktion genauer zu melden, wenn das Gerät der Besitzer der Energierichtlinie ist. Treiber müssen mit v31 oder höher neu kompiliert werden, um das folgende neue Verhalten zu erhalten:

  • Wenn das Gerät D0 aufgrund von S0 Idle (siehe WdfDeviceAssignS0IdleSettings) ein- oder verlässt, während ein nicht verwandter Systemstromübergang ausgeführt wird, gibt WdfDeviceGetSystemPowerAction möglicherweise PowerActionSleep zurück. Dies wurde in v31 behoben und gibt nun PowerActionNone zurück.

  • Wenn das System aus dem Hybridmodus (Standbymodus mit einer Ruhezustandsdatei) aktiviert wird, hat WdfDeviceGetSystemPowerAction vor v31 immer PowerActionHibernate zurückgegeben. Dies wurde in v31 behoben und gibt nun Folgendes zurück:

    • PowerActionSleep , wenn es ohne Stromausfall aktiviert wird, was bedeutet, dass das System in S3 verblieb
    • PowerActionHibernate , wenn es nach einem Stromausfall reaktiviert wird. Dies bedeutet, dass das System aus der Ruhezustandsdatei fortgesetzt wird.

Mit der WdfDeviceGetSystemPowerAction-Methode kann ein Treiber ermitteln, ob der Energieübergang eines Geräts erfolgt, weil sich das Gerät im Leerlauf befindet (oder wieder aktiviert wird) oder weil der gesamte Computer in einen Energiesparzustand wechselt (oder verlässt).

Der Treiber darf WdfDeviceGetSystemPowerAction nur aus den Ereignisrückruffunktionen aufrufen, die das Framework aufruft, wenn das Gerät in einen Energiesparzustand wechselt oder in den Betriebszustand zurückkehrt.

Der Wert, den WdfDeviceGetSystemPowerAction zurückgibt, hängt von den folgenden Situationen ab:

  • Wenn der Computer beim Aufrufen von WdfDeviceGetSystemPowerAction vom Treiber in einen Low-Power-Zustand wechselt, gibt die Methode den Grund zurück, warum der Computer in den Low-Power-Zustand wechselt. Die -Methode gibt beispielsweise PowerActionSleep zurück, wenn der Computer in den S1-, S2- oder S3-Energiesparzustand wechselt.
  • Wenn der Computer aus einem Energiesparzustand in seinen Arbeitszustand (S0) zurückkehrt, wenn der Treiber WdfDeviceGetSystemPowerAction aufruft, gibt die Methode den Grund zurück, warum der Computer in den Energiesparzustand gelangt ist. Die -Methode gibt beispielsweise PowerActionSleep zurück, wenn der Computer seinen S1-, S2- oder S3-Energiesparzustand verlässt.
  • Wenn der Computer eingeschaltet wird (nachdem er ausgeschaltet wurde), wenn der Treiber WdfDeviceGetSystemPowerAction aufruft, gibt die Methode PowerActionNone zurück.
  • Wenn das Gerät in einen Energiesparmodus wechselt oder beim Aufrufen von WdfDeviceGetSystemPowerAction vom Treiber in den Betriebszustand (D0) zurückkehrt, während der Rest des Systems im Arbeitszustand (S0) verbleibt, gibt die Methode PowerActionNone zurück.
  • Wenn sich sowohl der Computer als auch das Gerät im Arbeitszustand befinden, wenn der Treiber WdfDeviceGetSystemPowerAction aufruft, gibt die Methode PowerActionNone zurück.
Weitere Informationen zu Zuständen mit geringem Stromverbrauch finden Sie unter A Device Enter a Low-Power State.

Beispiele

Im folgenden Codebeispiel wird die Energieübergangsaktivität abgerufen, die derzeit für den Computer auftritt.

POWER_ACTION SysPowerAction;

SysPowerAction = WdfDeviceGetSystemPowerAction(device);

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.9
UMDF-Mindestversion 2.0
Kopfzeile wdfdevice.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)