WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Struktur (wdfdevice.h)
[Gilt für KMDF und UMDF]
Die WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur enthält vom Treiber bereitgestellte Informationen, die das Framework verwendet, wenn ein Gerät im Leerlauf ist und sich das System im Systemarbeitszustand (S0) befindet.
Syntax
typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS {
ULONG Size;
WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps;
DEVICE_POWER_STATE DxState;
ULONG IdleTimeout;
WDF_POWER_POLICY_S0_IDLE_USER_CONTROL UserControlOfIdleSettings;
WDF_TRI_STATE Enabled;
WDF_TRI_STATE PowerUpIdleDeviceOnSystemWake;
WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE IdleTimeoutType;
WDF_TRI_STATE ExcludeD3Cold;
} WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, *PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS;
Elemente
Size
Die Größe dieser Struktur in Byte.
IdleCaps
Ein WDF_POWER_POLICY_S0_IDLE_CAPABILITIES-typed-Enumerator, der die Fähigkeit des Geräts identifiziert, sich selbst zu reaktivieren, nachdem es auf einen Energiesparzustand festgelegt wurde, während das System im Arbeitszustand (S0) verbleibt.
DxState
Ein DEVICE_POWER_STATE-typed-Enumerator, der den niedrigen Gerätestromzustand identifiziert,, dass das Gerät nach Beendigung des Leerlauftimeouts eingibt. DEVICE_POWER_STATE Werte werden in wdm.hdefiniert.
IdleTimeout
Die Zeitspanne in Millisekunden, die das Gerät im Leerlauf bleibt, bevor es im DxState-bereitgestellten Zustand mit niedriger Leistung platziert wird. Um den Standard-Leerlauftimeoutwert des Frameworks zu verwenden, geben Sie IdleTimeoutDefaultValuean. Weitere Informationen dazu, wann das Framework das Gerät als im Leerlauf betrachtet, finden Sie unter Unterstützenden Power-Down-.
UserControlOfIdleSettings
Ein WDF_POWER_POLICY_S0_IDLE_USER_CONTROL-typed-Enumerator, der angibt, ob Benutzer die Möglichkeit haben, die Leerlaufeinstellungen des Geräts zu ändern.
Enabled
Ein WDF_TRI_STATE-typed-Enumerator, der angibt, ob das Gerät ausgeschaltet wird, wenn es im Leerlauf bleibt und die Systemleistung bei S0 liegt. Dieses Element kann einen der folgenden Werte aufweisen:
WdfTrue- – Das Herunterschalten ist aktiviert.
WdfFalse- – Das Herunterschalten ist deaktiviert.
WdfUseDefault- – Das Herunterschalten ist standardmäßig aktiviert; wenn der UserControlOfIdleSettings Member jedoch auf IdleAllowUserControlfestgelegt ist, überschreibt die INF-Datei des Benutzers den Anfangswert.
Wenn das Einschalten aktiviert ist, verfügt das Gerät über eine Reaktivierungsfunktion, und der Leerlauftimeoutwert läuft ab, ruft das Framework die EvtDeviceArmWakeFromS0 Rückruffunktion auf, bevor das Gerät in einen Energiesparzustand wechselt.
PowerUpIdleDeviceOnSystemWake
Ein WDF_TRI_STATE-typed-Enumerator, der angibt, ob das Gerät in den Arbeitszustand (D0) zurückkehrt, wenn das System zum Arbeitszustand (S0) zurückkehrt. Dieses Element ist nur gültig, wenn der Treiber das IdleCaps Member auf IdleCannotWakeFromS0festlegt. Der PowerUpIdleDeviceOnSystemWake Member kann einen der folgenden Werte aufweisen:
WdfTrue- – Wenn sich sowohl das Gerät als auch das System in einem Energiesparzustand befinden, kehrt das Gerät in den Arbeitszustand zurück, wenn das System in den Arbeitszustand zurückkehrt.
WdfFalse- – Wenn sich sowohl das Gerät als auch das System in einem Energiesparzustand befinden, verbleibt das Gerät im Energiesparmodus, wenn das System in den Arbeitszustand zurückkehrt.
WdfUseDefault- – Der Standardwert, den das Framework verwendet, wenn der Treiber keinen anderen Wert festgelegt. Dieser Wert hat dieselbe Bedeutung wie WdfFalse.
Wenn der PowerUpIdleDeviceOnSystemWake Member auf WdfFalse- oder WdfUseDefault-festgelegt ist, kehrt das Gerät nur dann zum Arbeitszustand zurück, wenn software auf das Gerät zugreift, z. B. wenn eine Anwendung eine E/A-Anforderung an das Gerät sendet. Weitere Informationen finden Sie unter Ein Gerät kehrtin den Arbeitszustand zurück.
Der PowerUpIdleDeviceOnSystemWake Member ist in Version 1.9 und höheren Versionen von KMDF und ab Version 2.0 von UMDF verfügbar.
IdleTimeoutType
Ein WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE-typed-Enumerator, der angibt, wie das IdleTimeout Member verwendet wird.
Der IdleTimeoutType Member ist in Version 1.11 und höheren Versionen von KMDF und ab Version 2.0 von UMDF verfügbar. Weitere Informationen finden Sie in den Anmerkungen.
ExcludeD3Cold
Ein WDF_TRI_STATE-typed-Enumerator, der angibt, ob der D3cold-Energiezustand eine zulässige Wahl für den Energiesparzustand sein soll, den das Gerät eingibt, wenn der Leerlauftimeout abläuft. Der ExcludeD3Cold Member kann einen der folgenden Werte aufweisen:
WdfTrue – Das Framework verschiebt ein Gerät in einen D-Zustand mit niedriger Leistung, wenn der Leerlauf-Timeout abläuft. Wenn dieser D-Zustand D3 ist, wird das Gerät in D3hot verschoben. Wenn ExcludeD3Cold- auf WdfTrue-festgelegt ist, ist kein weiterer Übergang von D3hot zu D3cold zulässig.
WdfFalse – Das Gerät kann den D3cold-Energiezustand eingeben, wenn der Leerlauftimeout abläuft, wenn alle folgenden Kriterien erfüllt sind:
- Das DxState-element dieser Struktur gibt PowerDeviceD3 oder PowerDeviceMaximuman.
- Die ACPI-Firmware gibt an, dass das Gerät den D3cold-Energiezustand unterstützt.
- Wenn der IdleCanWakeFromS0 oder IdleUsbSelectiveSuspend im IdleCaps Member dieser Struktur angegeben wurde, kann das Gerät auf ein externes Wake-Up-Ereignis reagieren, während sich der D3cold-Energiezustand befindet. Andernfalls gilt diese Anforderung nicht.
Include = machine.inf
Needs = PciD3ColdSupported
Andernfalls hat dieser Wert die gleiche Bedeutung wie WdfTrue-.
Der ExcludeD3Cold Member ist ab KMDF Version 1.11 sowie ab Version 2.0 von UMDF verfügbar und wird in früheren Betriebssystemen als Windows 8 ignoriert. Weitere Informationen finden Sie in den Anmerkungen.
Bemerkungen
Die WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur wird als Eingabe für WdfDeviceAssignS0IdleSettingsverwendet.
Wenn ein Treiber zum ersten Mal WdfDeviceAssignS0IdleSettingsaufruft, treten die folgenden Aktionen auf:
- Das Framework speichert die Werte aller WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Strukturmmber.
- Wenn der UserControlOfIdleSettings Member auf IdleAllowUserControl festgelegt ist und wenn der Enabled Member auf WdfUseDefaultfestgelegt ist, liest das Framework die Registrierung vor, um herauszufinden, ob der Benutzer das Einschalten des Geräts aktiviert hat, wenn es sich im Leerlauf befindet.
- Wenn der Treiber IdleUsbSelectiveSuspend- für den Wert IdleCaps Mitglieds angibt, muss dies beim ersten Aufruf WdfDeviceAssignS0IdleSettingserfolgen, und dieser Wert kann anschließend nicht mehr geändert werden.
- Wenn der Treiber IdleCanWakeFromS0 oder IdleCannotWakeFromS0 angibt, beim ersten Aufruf WdfDeviceAssignS0IdleSettingssie kann anschließend WdfDeviceAssignS0IdleSettings erneut aufrufen, um diesen Wert zu ändern (der Wert kann jedoch nicht in IdleUsbSelectiveSuspend) geändert werden.
Ab KMDF 1.11 und UMDF 2.0 kann ein KMDF-Treiber jederzeit zwischen IdleUsbSelectiveSuspend und IdleCannotWakeFromS0 wechseln.
Ab Windows 8 wird durch Festlegen des IdleTimeoutType Member auf SystemManagedIdleTimeout oder SystemManagedIdleTimeoutWithHint das Framework beim Power Management Framework (PoFx) registriert.
Wenn der Treiber funktionale Energiezustandsunterstützung für ein mehrstufiges Gerät implementiert, muss der Treiber entweder IdleTimeoutType- auf DriverManagedIdleTimeout oder nicht WdfDeviceAssignS0IdleSettings aufrufen.
Weitere Informationen finden Sie unter Unterstützen von Funktionskraftzuständen und Übersicht über das Power Management Framework.
Die folgenden Regeln gelten für den Wert, den Sie für das DxState Member angeben:
- Der Wert kann nicht PowerDeviceD0werden.
- Für USB-Geräte kann der Wert nicht PowerDeviceD0 oder PowerDeviceD3-sein.
- Wenn Sie PowerDeviceMaximumangeben, verwendet das Framework den Wert, den der Treiber für den Bus des Geräts im DeviceWake Member seiner WDF_DEVICE_POWER_CAPABILITIES Struktur bereitgestellt hat.
- Wenn der Wert des IdleCaps Member IdleCanWakeFromS0ist, können Sie keinen Gerätestromzustand angeben, der niedriger als der Gerätestromzustand im DeviceWake Mitglied der WDF_DEVICE_POWER_CAPABILITIES Struktur des Bustreibers ist. (Wenn der DeviceWake-Wert des Bustreibers Wert PowerDeviceD2ist, kann der DxState-Wert des Funktionstreibers nicht PowerDeviceD3.)
Ab KMDF 1.11 und UMDF 2.0 kann ein Gerät, das den Energiesparmodus unterstützt , die ExcludeD3Cold Mitglied dieser Struktur verwenden, um anzugeben, ob der D3cold-Energiezustand eine zulässige Wahl für den niedrigen Geräte-Energiezustand sein soll, das Gerät nach Ablauf des Leerlaufzeitzeitraums eingibt.
Informationen zu Registrierungseinträgen, die die Leerlauffunktionen eines Geräts steuern, finden Sie unter Benutzersteuerung des Geräte-Idle- und Wake-Verhaltens.
Um die WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Struktur zu initialisieren, sollte ihr Treiber WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INITaufrufen.
Anforderungen
Anforderung | Wert |
---|---|
Minimale KMDF-Version | 1.0 |
Mindest-UMDF-Version | 2.0 |
Kopfzeile | wdfdevice.h (einschließen Wdf.h) |