Freigeben über


WdfDeviceGetSystemPowerAction-Funktion (wdfdevice.h)

[Gilt für KMDF und UMDF]

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

Syntax

POWER_ACTION WdfDeviceGetSystemPowerAction(
  [in] WDFDEVICE Device
);

Parameter

[in] Device

Ein Handle zu einem Framework-Geräteobjekt.

Rückgabewert

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

Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.

Bemerkungen

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 eingibt oder beendet (siehe WdfDeviceAssignS0IdleSettings), während ein nicht verwandter Systemstromübergang ausgeführt wird, wird WdfDeviceGetSystemPowerAction möglicherweise PowerActionSleepzurückgeben. Dies wurde in v31 behoben und gibt jetzt PowerActionNone-zurück.

  • Wenn das System aus dem Hybridschlaf aktiviert wird (Ruhezustand mit einer Ruhezustandsdatei), vor v31, WdfDeviceGetSystemPowerAction immer PowerActionHibernatezurückgegeben. Dies wurde in v31 behoben und gibt jetzt Folgendes zurück:

    • PowerActionSleep, wenn es ohne Stromverlust aktiviert wird, was bedeutet, dass das System in S3 verbleibt.
    • PowerActionHibernate, wenn es nach stromausfall aktiviert wird, was bedeutet, dass das System aus der Ruhezustandsdatei fortgesetzt wird.

Mit der WdfDeviceGetSystemPowerAction--Methode kann ein Treiber ermitteln, ob der Stromübergang eines Geräts auftritt, da das Gerät im Leerlauf (oder aufwachen) ist oder weil der gesamte Computer einen Energiesparzustand eingibt (oder verlässt).

Der Treiber muss WdfDeviceGetSystemPowerAction nur aus den Ereignisrückruffunktionen aufrufen, die das Framework aufruft, wenn das Gerät in einen Energiesparzustand wechselt, oder in den Arbeitszustandzurückkehren.

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

  • Wenn der Computer einen Energiesparzustand eingibt, wenn der Treiber WdfDeviceGetSystemPowerActionaufruft, gibt die Methode den Grund zurück, warum der Computer in den Energiesparmodus wechselt. Die Methode gibt z. B. PowerActionSleep- zurück, wenn der Computer seinen S1-, S2- oder S3-Energiesparzustand eingibt.
  • Wenn der Computer aus einem Energiesparzustand in den Arbeitszustand (S0) zurückkehrt, wenn der Treiber WdfDeviceGetSystemPowerActionaufruft, gibt die Methode den Grund zurück, warum der Computer den Energiesparmodus eingegeben hat. Die Methode gibt z. B. 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 WdfDeviceGetSystemPowerActionaufruft, gibt die Methode PowerActionNonezurück.
  • Wenn das Gerät in einen Leerlaufzustand mit niedriger Leistung wechselt oder beim Aufrufen WdfDeviceGetSystemPowerActionin den Arbeitszustand (S0) zurückkehrt, gibt die Methode PowerActionNonezurück.
  • Wenn sich der Computer und das Gerät in ihren Arbeitszuständen befinden, wenn der Treiber WdfDeviceGetSystemPowerActionaufruft, gibt die Methode PowerActionNone-zurück.
Weitere Informationen zu Energiesparzuständen finden Sie unter Ein Gerät gibt einen Low-Power Zustandein.

Beispiele

Das folgende Codebeispiel ruft die Energieübergangsaktivität ab, die derzeit für den Computer ausgeführt wird.

POWER_ACTION SysPowerAction;

SysPowerAction = WdfDeviceGetSystemPowerAction(device);

Anforderungen

Anforderung Wert
Zielplattform- Universal
Minimale KMDF-Version 1.9
Mindest-UMDF-Version 2.0
Header- wdfdevice.h (einschließen Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)