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 sich ein Gerät im Leerlauf befindet und sich das System im Systembetriebszustand (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;
Member
Size
Die Größe (in Bytes) dieser Struktur.
IdleCaps
Ein WDF_POWER_POLICY_S0_IDLE_CAPABILITIES typisierter Enumerator, der die Fähigkeit des Geräts angibt, sich selbst zu reaktivieren, nachdem er auf einen Zustand mit geringer Leistung eingestellt wurde, während das System in seinem Betriebszustand (S0) verbleibt.
DxState
Ein DEVICE_POWER_STATE typisiertes Enumerator, der den Zustand der niedrigen Geräteleistung identifiziert, den das Gerät nach Ablauf des Leerlauftimeouts erhält. DEVICE_POWER_STATE Werte werden in wdm.h definiert.
IdleTimeout
Die Zeitspanne in Millisekunden, die das Gerät im Leerlauf verbleibt, bevor es vom Framework in den von DxState bereitgestellten Zustand mit geringer Leistung versetzt wird. Geben Sie IdleTimeoutDefaultValue an, um den Standardwert für Leerlauftimeout des Frameworks zu verwenden. Weitere Informationen dazu, wann das Framework das Gerät als im Leerlauf betrachtet, finden Sie unter Unterstützung des Leerlaufbetriebs.
UserControlOfIdleSettings
Ein WDF_POWER_POLICY_S0_IDLE_USER_CONTROL typisiertes Enumerator, der angibt, ob Benutzer die Möglichkeit haben, die Einstellungen im Leerlauf des Geräts zu ändern.
Enabled
Ein WDF_TRI_STATE typisierter Enumerator, der angibt, ob das Gerät ausgeschaltet wird, wenn es im Leerlauf bleibt und die Systemleistung bei S0 liegt. Dieses Element kann über einen der folgenden Werte verfügen:
WdfTrue : Das Herunterschalten ist aktiviert.
WdfFalse : Das Herunterschalten ist deaktiviert.
WdfUseDefault : Das Herunterschalten ist zunächst standardmäßig aktiviert. Wenn der UserControlOfIdleSettings-Member jedoch auf IdleAllowUserControl festgelegt ist, überschreibt die Einstellung oder die INF-Datei des Treibers den Anfangswert.
Wenn das Herunterfahren aktiviert ist, das Gerät über eine Aktivierungsfunktion verfügt und der Wert für das Leerlauftimeout abläuft, ruft das Framework die Rückruffunktion EvtDeviceArmWakeFromS0 des Treibers auf, bevor das Gerät in einen Energiesparzustand wechselt.
PowerUpIdleDeviceOnSystemWake
Ein WDF_TRI_STATE typisierter Enumerator, der angibt, ob das Gerät in seinen Arbeitszustand (D0) zurückkehrt, wenn das System in seinen Arbeitszustand (S0) zurückkehrt. Dieser Member ist nur gültig, wenn der Treiber das IdleCaps-Element auf IdleCannotWakeFromS0 festlegt. Das PowerUpIdleDeviceOnSystemWake-Element 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 seinen Betriebszustand zurück, wenn das System in seinen Betriebszustand zurückkehrt.
WdfFalse : Wenn sich sowohl das Gerät als auch das System in einem Energiesparzustand befinden, verbleibt das Gerät im Zustand mit geringer Leistung, wenn das System in den Betriebszustand zurückkehrt.
WdfUseDefault : Der Standardwert, den das Framework verwendet, wenn der Treiber keinen anderen Wert legt. Dieser Wert hat die gleiche Bedeutung wie WdfFalse.
Wenn der PowerUpIdleDeviceOnSystemWake-Member auf WdfFalse oder WdfUseDefault festgelegt ist, kehrt das Gerät nur dann in seinen 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 Gerät kehrt in den Betriebszustand zurück.
Der PowerUpIdleDeviceOnSystemWake-Member ist in Version 1.9 und höher von KMDF und ab Version 2.0 von UMDF verfügbar.
IdleTimeoutType
Ein WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE typisierter Enumerator, der angibt, wie das IdleTimeout-Element verwendet wird.
Das IdleTimeoutType-Element ist in Version 1.11 und höher von KMDF und ab Version 2.0 von UMDF verfügbar. Weitere Informationen finden Sie unter Hinweise.
ExcludeD3Cold
Ein WDF_TRI_STATE typisierter Enumerator, der angibt, ob der D3cold-Energiezustand eine zulässige Wahl für den Energiesparzustand sein soll, den das Gerät beim Ablauf des Leerlauftimeouts erhält. Das ExcludeD3Cold-Element kann einen der folgenden Werte aufweisen:
WdfTrue : Das Framework versetzt ein Gerät in einen D-Zustand mit geringer Leistung, wenn der Leerlaufzeitlimit abläuft. Wenn dieser D-Zustand D3 ist, wird das Gerät zu D3hot verschoben. Wenn ExcludeD3Cold auf WdfTrue festgelegt ist, ist kein weiterer Übergang von D3hot zu D3cold zulässig.
WdfFalse : Das Gerät kann in den D3cold-Energiezustand versetzt werden, wenn der Leerlaufzeitlimit abläuft, wenn alle folgenden Kriterien erfüllt sind:
- Das DxState-Element dieser Struktur gibt PowerDeviceD3 oder PowerDeviceMaximum an.
- Die ACPI-Firmware gibt an, dass das Gerät den D3cold-Energiezustand unterstützt.
- Wenn der Treiber idleCanWakeFromS0 oder IdleUsbSelectiveSuspend im IdleCaps-Member dieser Struktur angegeben hat, kann das Gerät im D3cold-Energiezustand auf ein externes Aktivierungsereignis reagieren. 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 Betriebssystemen vor Windows 8 ignoriert. Weitere Informationen finden Sie unter Hinweise.
Hinweise
Die WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur wird als Eingabe für WdfDeviceAssignS0IdleSettings verwendet.
Wenn ein Treiber WdfDeviceAssignS0IdleSettings zum ersten Mal aufruft, werden die folgenden Aktionen ausgeführt:
- Das Framework speichert die Werte aller WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Strukturmember.
- Wenn der UserControlOfIdleSettings-Member auf IdleAllowUserControl festgelegt ist und der Enabled-Member auf WdfUseDefault festgelegt ist, liest das Framework die Registrierung, um herauszufinden, ob der Benutzer das Herunterschalten des Geräts im Leerlauf aktiviert hat.
- Wenn der Treiber IdleUsbSelectiveSuspend für den Wert des IdleCaps-Members angibt, muss er dies beim ersten Aufrufen von WdfDeviceAssignS0IdleSettings tun, und er kann diesen Wert anschließend nicht ändern.
- Wenn der Treiber IdleCanWakeFromS0 oder IdleCannotWakeFromS0 beim ersten Aufruf von WdfDeviceAssignS0IdleSettings angibt, kann er 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 führt das Festlegen des IdleTimeoutType-Members auf SystemManagedIdleTimeoutout oder SystemManagedIdleTimeoutWithHint dazu, dass sich das Framework beim Power Management Framework (PoFx) registriert.
Wenn der Treiber die Unterstützung des funktionalen Energiezustands für ein Gerät mit mehreren Komponenten implementiert, muss der Treiber entweder IdleTimeoutType auf DriverManagedIdleTimeoutout festlegen oder WdfDeviceAssignS0IdleSettings überhaupt nicht aufrufen.
Weitere Informationen finden Sie unter Unterstützen von Funktionsenergiezuständen und Übersicht über das Power Management Framework.
Die folgenden Regeln gelten für den Wert, den Sie für den DxState-Member angeben:
- Der Wert darf nicht PowerDeviceD0 sein.
- Bei USB-Geräten darf der Wert nicht PowerDeviceD0 oder PowerDeviceD3 sein.
- Wenn Sie PowerDeviceMaximum angeben, 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-MembersIdleCanWakeFromS0 ist, können Sie keinen Geräteleistungszustand angeben, der niedriger als der Geräteleistungszustand im DeviceWake-Member der WDF_DEVICE_POWER_CAPABILITIES Struktur des Bustreibers ist. (Anders ausgedrückt: Wenn der DeviceWake-Wert des Bustreibers PowerDeviceD2 ist, darf der DxState-Wert Ihres Funktionstreibers nicht PowerDeviceD3 sein.)
Ab KMDF 1.11 und UMDF 2.0 kann ein Gerät, das das Herunterfahren im Leerlauf unterstützt , den ExcludeD3Cold-Member dieser Struktur verwenden, um anzugeben, ob der D3cold-Energiezustand eine zulässige Wahl für den Zustand mit niedriger Geräteleistung sein soll, den das Gerät nach Ablauf des Leerlauftimeoutzeitraums eingibt.
Informationen zu Registrierungseinträgen, die die Leerlauffunktionen eines Geräts steuern, finden Sie unter Benutzersteuerung des Geräteleidle- und Aktivierungsverhaltens.
Um die WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur zu initialisieren, sollte Ihr Treiber WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT aufrufen.
Anforderungen
Anforderung | Wert |
---|---|
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfdevice.h (einschließen von Wdf.h) |