EVT_WDF_DEVICE_D0_EXIT回呼函式 (wdfdevice.h)

[適用於 KMDF 和 UMDF]

驅動程式的 EvtDeviceD0Exit 事件回呼函式會執行驅動程式裝置離開 D0 電源狀態時所需的作業。

語法

EVT_WDF_DEVICE_D0_EXIT EvtWdfDeviceD0Exit;

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

參數

[in] Device

架構裝置物件的句柄。

[in] TargetState

WDF_POWER_DEVICE_STATE型別列舉值,可識別裝置即將進入的裝置電源狀態。

傳回值

如果 EvtDeviceD0Exit 回呼函式未發生任何錯誤,它必須傳回STATUS_SUCCESS或另一個狀態值,NT_SUCCESS (狀態) 等於 TRUE。 否則,它必須傳回狀態值,NT_SUCCESS (狀態) 等於 FALSE

備註

若要註冊 EvtDeviceD0Exit 回呼函式,驅動程式必須呼叫 WdfDeviceInitSetPnpPowerEventCallbacks

如果驅動程式已註冊 EvtDeviceD0Exit 回呼函式,則架構會在每次驅動程式的裝置離開其運作 (D0) 狀態時呼叫函式。 發生下列其中一項時,裝置會離開 D0 狀態:

  • 系統及其所有裝置即將離開其工作狀態,並進入低電源狀態。
  • 如果裝置支援低電源閑置,裝置即將進入低電源狀態,因為裝置處於閑置狀態。
  • 隨插即用 管理員嘗試轉散發系統的硬體資源。
  • 使用者已指出,通常是透過應用程式的使用者介面,表示他想要移除裝置。
此架構也會在裝置意外移除之後呼叫 EvtDeviceD0Exit 回 呼函式, (意外移除) 。

如需架構何時呼叫此回呼函式的詳細資訊,請參閱 PnP 和電源管理案例

除非裝置遭到意外移除,否則架構會在它停用裝置中斷后立即呼叫此回呼函式,但在裝置的電源從 D0 減少之前呼叫。 TargetState 參數會識別裝置即將進入的裝置電源狀態。

EvtDeviceD0Exit 回呼函式必須在裝置進入指定的低電源狀態之前執行任何必要的作業,例如儲存驅動程式稍後將裝置還原至其 D0 電源狀態所需的任何資訊。

如果 TargetState 參數是 WdfPowerDevicePrepareForHibernation,則驅動程式不得關閉裝置,因為系統會在儲存其休眠檔案時使用裝置。

如果 TargetStateWdfPowerDeviceD3Final,您應該假設系統已關閉、即將移除裝置,或 資源重新平衡 正在進行中。 如果您的驅動程式必須儲存資訊,它應該將它寫入磁碟或其他永久儲存媒體。 不過,檢查 WdfPowerDeviceD3Final 並執行裝置移除的清除工作不正確。 例如,如果因為閑置而進入 Dx 電源狀態的裝置,之後會意外移除,則不會再次呼叫其 EvtDeviceD0Exit 。 執行這項工作的正確位置會改為在 EvtDeviceReleaseHardware 中。

如需提供此回呼函式之驅動程式的詳細資訊,請參閱 支援函式驅動程式中的 PnP 和電源管理

規格需求

需求
目標平台 Universal
最低 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 wdfdevice.h (包含 Wdf.h)
IRQL PASSIVE_LEVEL

另請參閱

EvtDeviceD0Entry