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 benötigt werden, wenn das Gerät des Treibers den D0-Energiezustand 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 zu einem Framework-Geräteobjekt.

[in] TargetState

Ein WDF_POWER_DEVICE_STATE-typed-Enumerator, der den Gerätestromzustand angibt, den das Gerät eingibt.

Rückgabewert

Wenn die EvtDeviceD0Exit Rückruffunktion keine Fehler aufweist, muss sie STATUS_SUCCESS oder einen anderen Statuswert zurückgeben, für den NT_SUCCESS(Status) TRUEentspricht. Andernfalls muss ein Statuswert zurückgegeben werden, für den NT_SUCCESS(Status) FALSE-entspricht.

Bemerkungen

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

Wenn der Treiber eine EvtDeviceD0Exit Rückruffunktion registriert hat, ruft das Framework die Funktion jedes Mal auf, wenn eines der Treibergeräte den Arbeitszustand (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, ihre Arbeitszustände zu verlassen und in einen Energiesparzustand zu gelangen.
  • Das Gerät ist dabei, einen Energiesparzustand einzugeben, da es sich im Leerlauf befindet, wenn das Gerät den Leerlauf unterstützt.
  • Der Plug and 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 EvtDeviceD0Exit Rückruffunktion auf, nachdem ein Gerät unerwartet entfernt wurde (Überraschung entfernt).

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

Sofern das Gerät nicht überraschend entfernt wurde, ruft das Framework diese Rückruffunktion unmittelbar nach dem Deaktivieren der Unterbrechungen des Geräts auf, aber bevor die Leistung des Geräts von D0 reduziert wird. Der parameter TargetState identifiziert den Gerätestromzustand, den das Gerät eingibt.

Die EvtDeviceD0Exit Rückruffunktion muss alle Vorgänge ausführen, die erforderlich sind, 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 den D0-Energiezustand wiederherzustellen.

Wenn der parameter TargetStateWdfPowerDevicePrepareForHibernationist, darf der Treiber das Gerät nicht beenden, da das System das Gerät beim Speichern der Ruhezustandsdatei verwendet.

Wenn TargetState-WdfPowerDeviceD3Final-ist, sollten Sie davon ausgehen, dass das System deaktiviert ist, das Gerät entfernt wird oder eine Ressource neu ausgeglichen wird, ausgeführt wird. Wenn Der Treiber Informationen speichern muss, sollte er auf den Datenträger oder ein anderes dauerhaftes Speichermedium geschrieben werden. Es ist jedoch falsch, WdfPowerDeviceD3Final- zu überprüfen und dann die Bereinigung für die Geräteentfernung zu erledigen. Wenn beispielsweise ein Gerät, das aufgrund des Leerlaufs den Dx-Energiezustand eingegeben hat, später entfernt wird, wird dessen EvtDeviceD0Exit nicht erneut aufgerufen. Der richtige Ort für diese Arbeit wäre stattdessen in EvtDeviceReleaseHardware.

Weitere Informationen zu Treibern, die diese Rückruffunktion bereitstellen, finden Sie unter Unterstützen von PnP und Power Management in Funktionstreibern.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Minimale KMDF-Version 1.0
Mindest-UMDF-Version 2.0
Header- wdfdevice.h (einschließen Wdf.h)
IRQL- PASSIVE_LEVEL

Siehe auch

EvtDeviceD0Entry