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。
總線驅動程式必須先呼叫 PoStartNextPowerIrp,才能完成每個 IRP。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000。 |
目標平臺 | 普遍 |
標頭 | ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |