PoStartNextPowerIrp 函数 (wdm.h)

PoStartNextPowerIrp 例程向电源管理器表明驱动程序已准备好处理下一个电源 IRP。 仅 (Windows Server 2003、Windows XP 和 Windows 2000。)

语法

void PoStartNextPowerIrp(
  [in, out] PIRP Irp
);

参数

[in, out] Irp

指向在其中IRP_MJ_POWER主要函数代码的 IRP 指针。

返回值

备注

从 Windows Vista 开始,驱动程序不需要调用 PoStartNextPowerIrp ,并且调用此例程不会执行电源管理操作。 但是,在 Windows Server 2003、Windows XP 和 Windows 2000 上,设备堆栈中的每个驱动程序都必须调用 PoStartNextPowerIrp 后,驱动程序完成之前的电源 IRP(如果有),并准备好处理下一个电源 IRP。 每个驱动程序必须针对每个 IRP_MN_QUERY_POWERIRP_MN_SET_POWER 请求调用一次。

尽管电源 IRP 仅完成一次(通常由设备的总线驱动程序完成),但当 IRP 向下传输或备份堆栈时,设备堆栈中的每个驱动程序都必须调用 PoStartNextPowerIrp 。 即使驱动程序未能通过 IRP,驱动程序也必须调用 PoStartNextPowerIrp ,以向电源管理器发出信号,它已准备好处理另一个电源 IRP。

当当前 IRP 堆栈位置指向当前驱动程序时,驱动程序必须调用 PoStartNextPowerIrp 。 因此,必须在 IoCompleteRequestIoSkipCurrentIrpStackLocationPoCallDriver 之前调用此例程。 一般情况下,驱动程序应从其与 IRP 关联的 IoCompletion 例程或从传递给 PoRequestPowerIrp 的回调例程调用 PoStartNextPowerIrp

在完成每个 IRP 之前,总线驱动程序必须调用 PoStartNextPowerIrp

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

另请参阅

IRP

IRP_MJ_POWER

IRP_MN_QUERY_POWER

IRP_MN_SET_POWER

IoCompleteRequest

IoSkipCurrentIrpStackLocation

PoCallDriver

PoRequestPowerIrp