EVT_WDF_DEVICE_D0_ENTRY wdfdevice.h (回调函数)

[适用于 KMDF 和 UMDF]

驱动程序的 EvtDeviceD0Entry 事件回调函数执行驱动程序设备进入 D0 电源状态时所需的操作。

语法

EVT_WDF_DEVICE_D0_ENTRY EvtWdfDeviceD0Entry;

NTSTATUS EvtWdfDeviceD0Entry(
  [in] WDFDEVICE Device,
  [in] WDF_POWER_DEVICE_STATE PreviousState
)
{...}

参数

[in] Device

框架设备对象的句柄。

[in] PreviousState

标识上一个设备电源状态 的WDF_POWER_DEVICE_STATE类型枚举器。

返回值

如果 EvtDeviceD0Entry 回调函数未遇到错误,则必须返回STATUS_SUCCESS或其他状态,NT_SUCCESS (状态) 等于 TRUE。 否则,它必须返回NT_SUCCESS (状态) 等于 FALSE的状态值。

有关此回调函数的返回值的详细信息,请参阅 报告设备故障

EvtDeviceD0Entry 回调函数返回状态值后,框架不调用驱动程序的 EvtDeviceD0Exit 回调函数,NT_SUCCESS (状态) 等于 FALSE 的状态值。

备注

若要为设备注册 EvtDeviceD0Entry 回调函数,驱动程序必须调用 WdfDeviceInitSetPnpPowerEventCallbacks

如果驱动程序为设备注册了 EvtDeviceD0Entry 回调函数,则每次设备进入其工作 (D0) 状态时,框架都会调用该函数。 发生以下情况之一时,设备将进入 D0 状态:

  • (枚举设备,因为设备已插入或系统重新启动) 。
  • 系统及其所有设备都从低功率状态返回到其工作状态。
  • 设备进入低功率状态后返回其工作状态,因为如果设备支持低功率空闲) ,则设备处于空闲状态 (。
  • 即插即用管理器在系统设备中重新分发了系统的硬件资源。
框架在设备进入其工作 (D0) 状态后立即调用 EvtDeviceD0Entry 回调函数,并可供驱动程序使用,但在设备中断已启用之前。 PreviousState 参数标识设备进入 D0 状态之前的设备电源状态。 当框架首次调用 EvtDeviceD0Entry 时,它提供 WdfPowerDeviceD3FinalPreviousState 值。

回调函数必须执行使设备完全正常运行所需的任何操作,例如加载固件或启用在设备处于低功率状态时禁用的设备功能。

如果 EvtDeviceD0Entry 回调函数返回状态值,NT_SUCCESS (状态) 等于 FALSE,则框架执行以下操作:

  • 如果设备首次启动,框架将开始对设备有序 删除 序列。
  • 如果设备从低功率状态返回到其工作状态,框架将开始对设备执行 意外删除 序列。
框架在这些情况下不调用驱动程序的 EvtDeviceD0Exit 回调函数。

有关框架何时调用 EvtDeviceD0Entry 回调函数的详细信息,请参阅 PnP 和电源管理方案

有关提供此回调函数的驱动程序的详细信息,请参阅 函数驱动程序中的支持 PnP 和电源管理

EvtDeviceD0Entry 回调函数在 IRQL = PASSIVE_LEVEL调用。 不应使此回调函数 可分页

要求

   
目标平台 通用
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
Header wdfdevice.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL (请参阅“备注”部分)

另请参阅

EvtDeviceD0Exit