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.
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) |