PoStartNextPowerIrp 函数 (ntifs.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 仅完成一次,通常由设备的总线驱动程序完成,但设备堆栈中的每个驱动程序都必须调用 PoStartNextPowerIrp,因为 IRP 向下或备份堆栈。 即使驱动程序失败 IRP,驱动程序也必须调用 PoStartNextPowerIrp,以向电源管理器发出信号,表明它已准备好处理另一个电源 IRP。

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

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

要求

要求 价值
最低支持的客户端 Windows 2000。
目标平台 普遍
标头 ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

另请参阅

IRP

IRP_MJ_POWER

IRP_MN_QUERY_POWER

IRP_MN_SET_POWER

IoCompleteRequest

IoSkipCurrentIrpStackLocation

PoCallDriver

PoRequestPowerIrp