poSetSystemWake 函数 (wdm.h)

PoSetSystemWake 例程将指定的 IRP 标记为导致系统从睡眠状态唤醒的 IRP。

语法

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

参数

[in, out] Irp

指向等待/唤醒 IRP 的指针。

返回值

备注

驱动程序调用 PoSetSystemWake ,将 IRP_MN_WAIT_WAKE IRP 标记为使系统从睡眠状态唤醒。 默认情况下,等待/唤醒 IRP 被视为设备唤醒 IRP。 等待/唤醒链中的终端设备负责确定是否唤醒系统,并为终端等待/唤醒 IRP 调用 PoSetSystemWake 。 当驱动程序在 IRP 上调用 PoSetSystemWake 时,它被标记为有助于将系统从睡眠状态唤醒。 堆栈中只有一个驱动程序需要调用此例程,它通常应该是驱动程序堆栈中的总线驱动程序。

等待/唤醒链中的所有其他驱动程序都可以在完成时为其自己的等待/唤醒 IRP 调用 PoGetSystemWake ,以确定它们是否应在即将完成的任何子等待/唤醒 IRP 上调用 PoSetSystemWake 。 这可确保系统唤醒信息在整个等待/唤醒链中正常进行。

等待/唤醒 IRP 完成后,电源管理器会检查 IRP 是否标记为系统唤醒 IRP。 如果 IRP 标记为系统唤醒 IRP,则电源管理器会将 IRP 添加到唤醒系统的设备的内部列表中。 但是,电源管理器仅跟踪运行系统的最特定设备。 例如,如果将设备 A 添加为唤醒系统的设备,然后又添加了设备 B(设备 A 的子级),则电源管理器仅将设备 B 保留在列表中,因为设备 B 是最具体的。 如果电源管理器无法确定唤醒系统的最具体设备,则电源管理器可能会跟踪报告唤醒系统的多个设备。

电源管理器记录 Windows (ETW) 事件跟踪, (全局系统通道) 查看,其中包括有关哪些设备唤醒系统的信息。

要求

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

另请参阅

PoGetSystemWake