报告当系统回到 S0 状态时设备开机

[仅适用于 KMDF]

当系统从低功耗状态返回到其工作 (S0) 状态时,PnP 管理器会发送系统设置电源 IRP (IRP_MN_SET_POWER) ,以将设备返回到其工作 (D0) 状态。 WDF 处理系统设置电源 IRP。 但是,由于在多组件方案中,驱动程序已直接注册到电源管理框架 (PoFx) ,因此当设备在电源状态) (D0 完全转换时,驱动程序必须调用 PoFxReportDevicePoweredOn 。 驱动程序可以通过注册 WDM 预处理例程来实现此目的,以在系统设置电源 IRP 到达时接收通知。

驱动程序可以使用以下过程:

  1. 调用 WdfDeviceInitAssignWdmIrpPreprocessCallbackIRP_MN_SET_POWER注册 EvtDeviceWdmIrpPreprocess 回调函数。 在回调中,驱动程序在其设备扩展中设置一个标志,以指示它需要从其下一个 EvtDeviceD0Entry 回调调用 PoFxReportDevicePoweredOn
  2. EvtDeviceD0Entry 中,如果设置了标志,驱动程序将清除标志并调用 PoFxReportDevicePoweredOn
  3. 驱动程序还会检查 EvtDeviceSelfManagedIoFlush 中的标志。 如果设置了标志,则设备无法返回到 D0,并且设备已被删除。 在这种情况下,驱动程序调用 PoFxReportDevicePoweredOn ,然后注销 Power Framework。