从设备电源策略所有者调用 PoStartNextPowerIrp
从 Windows Vista 开始,不需要调用 PoStartNextPowerIrp ,调用此例程不会执行电源管理操作。 但是,在 Windows Server 2003、Windows XP 和 Windows 2000 中,拥有设备电源策略的函数驱动程序必须为驱动程序收到的每个IRP_MN_QUERY_POWER或IRP_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 之前。 |
不允许。 |