PoSetSystemWake 函式 (wdm.h)
PoSetSystemWake 例程會將指定的 IRP 標示為導致系統從睡眠狀態喚醒的 IRP。
語法
void PoSetSystemWake(
[in, out] PIRP Irp
);
參數
[in, out] Irp
等候/喚醒 IRP 的指標。
傳回值
無
備註
驅動程式呼叫 PoSetSystemWake ,將 IRP_MN_WAIT_WAKE IRP 標示為從睡眠狀態喚醒系統。 根據預設,等候/喚醒 IRP 會被視為裝置喚醒 IRP。 終端機裝置在等候/喚醒鏈結中負責判斷它是否喚醒系統,並呼叫 PoSetSystemWake 進行終端機等候/喚醒 IRP。 當驅動程式在 IRP 上呼叫 PoSetSystemWake 時,它標示為已讓系統從睡眠狀態喚醒系統。 堆疊中只有一個驅動程式需要呼叫此例程,而且通常應該是驅動程式堆疊中的總線驅動程式。
等候/喚醒鏈結中的所有其他驅動程式都可以在完成時呼叫 PoGetSystemWake ,以判斷是否應該在即將完成的任何子等候/喚醒 IRP 上呼叫 PoSetSystemWake 。 這可確保系統喚醒資訊會在等候/喚醒鏈結中正常進行。
等候/喚醒 IRP 完成之後,電源管理員會檢查 IRP 是否標示為系統喚醒 IRP。 如果 IRP 標示為系統喚醒 IRP,電源管理員會將 IRP 新增至喚醒系統之裝置的內部清單。 不過,電源管理員只會追蹤處理系統的最特定裝置。 例如,如果裝置 A 新增為喚醒系統的裝置,然後新增裝置 B,也就是裝置 A 的子系,則電源管理員只會保留清單中的裝置 B,因為裝置 B 最明確。 如果電源管理員無法判斷喚醒系統的最特定裝置,電源管理員可能會追蹤報告其喚醒系統的多個裝置。
電源管理員會記錄 Windows (ETW 的事件追蹤) 事件, (全域系統通道中可檢視的事件追蹤,) 包含哪些裝置喚醒系統的相關信息。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |