Freigeben über


EVT_WDF_DEVICE_D0_EXIT Rückruffunktion (wdfdevice.h)

[Gilt für KMDF und UMDF]

Die EvtDeviceD0Exit-Ereignisrückruffunktion eines Treibers führt Vorgänge aus, die erforderlich sind, wenn das Gerät des Treibers den D0-Netzzustand verlässt.

Syntax

EVT_WDF_DEVICE_D0_EXIT EvtWdfDeviceD0Exit;

NTSTATUS EvtWdfDeviceD0Exit(
  [in] WDFDEVICE Device,
  [in] WDF_POWER_DEVICE_STATE TargetState
)
{...}

Parameter

[in] Device

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

[in] TargetState

Ein WDF_POWER_DEVICE_STATE typisiertes Enumerator, der den Geräteleistungszustand identifiziert, den das Gerät gerade eingeben wird.

Rückgabewert

Wenn für die Rückruffunktion EvtDeviceD0Exit keine Fehler auftreten, muss sie STATUS_SUCCESS oder einen anderen status Wert zurückgeben, für den NT_SUCCESS(status) true entspricht. Andernfalls muss ein status Wert zurückgegeben werden, für den NT_SUCCESS(status) false entspricht.

Hinweise

Um eine EvtDeviceD0Exit-Rückruffunktion zu registrieren, muss ein Treiber WdfDeviceInitSetPnpPowerEventCallbacks aufrufen.

Wenn der Treiber eine EvtDeviceD0Exit-Rückruffunktion registriert hat, ruft das Framework die Funktion jedes Mal auf, wenn eines der Geräte des Treibers seinen Funktionszustand (D0) verlässt. Ein Gerät verlässt den D0-Zustand, wenn eine der folgenden Aktionen auftritt:

  • Das System und alle geräte sind dabei, ihren Arbeitszustand zu verlassen und in einen Low-Power-Zustand zu gelangen.
  • Das Gerät wird in einen Energiesparzustand versetzt, da es sich im Leerlauf befindet, wenn das Gerät den Leerlauf mit geringer Leistung unterstützt.
  • Der Plug & Play-Manager versucht, die Hardwareressourcen des Systems neu zu verteilen.
  • Ein Benutzer hat in der Regel über die Benutzeroberfläche einer Anwendung angegeben, dass er das Gerät entfernen möchte.
Das Framework ruft auch die Rückruffunktion EvtDeviceD0Exit auf, nachdem ein Gerät unerwartet entfernt wurde (überraschend entfernt).

Weitere Informationen dazu, wann das Framework diese Rückruffunktion aufruft, finden Sie unter PnP- und Energieverwaltungsszenarien.

Sofern das Gerät nicht überraschend entfernt wurde, ruft das Framework diese Rückruffunktion sofort nach der Deaktivierung der Unterbrechungen des Geräts auf, aber bevor die Leistung des Geräts von D0 verringert wird. Der TargetState-Parameter identifiziert den Geräteleistungsstatus, den das Gerät gerade eingeben wird.

Die Rückruffunktion EvtDeviceD0Exit muss alle erforderlichen Vorgänge ausführen, bevor das Gerät in den angegebenen Energiesparzustand wechselt, z. B. das Speichern von Informationen, die der Treiber später benötigt, um das Gerät in seinen D0-Netzzustand wiederherzustellen.

Wenn der TargetState-ParameterWdfPowerDevicePrepareForHibernation ist, darf der Treiber das Gerät nicht ausschalten, da das System das Gerät beim Speichern der Ruhezustandsdatei verwendet.

Wenn TargetStateWdfPowerDeviceD3Final ist, sollten Sie davon ausgehen, dass das System deaktiviert ist, das Gerät gerade entfernt werden soll oder dass eine Ressourcenrebalance ausgeführt wird. Wenn Ihr Treiber Informationen speichern muss, sollte er sie auf den Datenträger oder ein anderes permanentes Speichermedium schreiben. Es ist jedoch falsch, WdfPowerDeviceD3Final zu überprüfen und dann Bereinigungsarbeiten für die Geräteentfernung auszuführen. Wenn beispielsweise ein Gerät, das aufgrund des Leerlaufs in den Dx-Energiezustand versetzt wurde, später überraschend entfernt wird, wird sein EvtDeviceD0Exit nicht mehr aufgerufen. Der richtige Ort für diese Arbeit wäre stattdessen evtDeviceReleaseHardware .

Weitere Informationen zu Treibern, die diese Rückruffunktion bereitstellen, finden Sie unter Unterstützung der PnP- und Energieverwaltung in Funktionstreibern.

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfdevice.h (einschließen von Wdf.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

EvtDeviceD0Entry