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 状态:
- 系统及其所有设备即将离开其工作状态并进入低功率状态。
- 如果设备支持低功率空闲,设备将进入低功率状态,因为它处于空闲状态。
- 即插即用管理器正在尝试重新分发系统的硬件资源。
- 用户通常通过应用程序的用户界面指示他或她想要删除设备。
有关框架何时调用此回调函数的详细信息,请参阅 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 |