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