从设备电源策略所有者调用 PoStartNextPowerIrp

从 Windows Vista 开始,不需要调用 PoStartNextPowerIrp ,调用此例程不会执行电源管理操作。 但是,在 Windows Server 2003、Windows XP 和 Windows 2000 中,拥有设备电源策略的函数驱动程序必须为驱动程序收到的每个IRP_MN_QUERY_POWERIRP_MN_SET_POWER请求调用 PoStartNextPowerIrp 一次。 何时发生调用取决于请求的类型以及驱动程序是失败还是成功请求,如下表所示。

请求的类型 如果驱动程序成功请求,则调用将发生: 如果驱动程序未通过请求,则会发生调用:

IRP_MN_QUERY_POWER (设备电源状态)

IoCompletion 例程中,立即返回。

DispatchPower 例程中,调用 IoCompleteRequest 之前。

IRP_MN_QUERY_POWER (系统电源状态)

在相关设备 IRP 的 PoRequestPowerIrp 回调例程中,紧接在完成系统 IRP 之前。

DispatchPower 例程中,调用 IoCompleteRequest 之前。

IRP_MN_SET_POWER (设备电源状态)

IoCompletion 例程中,立即返回。

不允许。

IRP_MN_SET_POWER (系统电源状态)

在相关设备 IRP 的 PoRequestPowerIrp 回调例程中,紧接在完成系统 IRP 之前。

不允许。