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 和电源管理。

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfdevice.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL

另请参阅

EvtDeviceD0Entry