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_POWER 或 IRP_MN_SET_POWER 请求调用一次。
尽管电源 IRP 仅完成一次,通常由设备的总线驱动程序完成,但设备堆栈中的每个驱动程序都必须调用 PoStartNextPowerIrp,因为 IRP 向下或备份堆栈。 即使驱动程序失败 IRP,驱动程序也必须调用 PoStartNextPowerIrp,以向电源管理器发出信号,表明它已准备好处理另一个电源 IRP。
当当前 IRP 堆栈位置指向当前驱动程序时,驱动程序必须调用 PoStartNextPowerIrp。 因此,必须在 IoCompleteRequest、IoSkipCurrentIrpStackLocation和 PoCallDriver之前调用此例程。 作为一般规则,驱动程序应从与 IRP 关联的 IoCompletion 例程或传递给 PoRequestPowerIrp的回调例程调用 PoStartNextPowerIrp。
在完成每个 IRP 之前,总线驱动程序必须调用 PoStartNextPowerIrp。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000。 |
目标平台 | 普遍 |
标头 | ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |