PoStartNextPowerIrp 函式 (ntifs.h)
PoStartNextPowerIrp 例程會向電源管理員發出訊號,指出驅動程式已準備好處理下一個電源 IRP。 (Windows Server 2003、Windows XP 和 Windows 2000 only.)
語法
void PoStartNextPowerIrp(
[in, out] PIRP Irp
);
參數
[in, out] Irp
主要函式程式代碼 IRP_MJ_POWER的 IRP 指標。
傳回值
無
備註
從 Windows Vista 開始,驅動程式不需要呼叫 PoStartNextPowerIrp ,而且此例程的呼叫不會執行電源管理作業。 不過,在 Windows Server 2003、Windows XP 和 Windows 2000 上,必須在驅動程式完成先前的電源 IRP 之後,由裝置堆疊中的每個驅動程式呼叫 PoStartNextPowerIrp ,如果有的話,且已準備好處理下一個電源 IRP。 每個驅動程式都必須針對每個 IRP_MN_QUERY_POWER 或 IRP_MN_SET_POWER 要求呼叫一次。
雖然電源 IRP 只完成一次,通常是由裝置的總線驅動程式完成,但裝置堆疊中的每個驅動程式都必須呼叫 PoStartNextPowerIrp ,因為 IRP 會向下移動或備份堆疊。 即使驅動程式失敗 IRP,驅動程式仍必須呼叫 PoStartNextPowerIrp ,以向電源管理員發出通知,指出其已準備好處理另一個電源 IRP。
驅動程式必須呼叫 PoStartNextPowerIrp ,而目前的 IRP 堆疊位置會指向目前的驅動程式。 因此,必須在 IoCompleteRequest、 IoSkipCurrentIrpStackLocation和 PoCallDriver之前呼叫此例程。 一般規則是,驅動程式應該從與 IRP 相關聯的 IoCompletion 例程呼叫 PoStartNextPowerIrp,或從傳遞至 PoRequestPowerIrp 的回呼例程呼叫 PoStartNextPowerIrp。
總線驅動程式必須先呼叫 PoStartNextPowerIrp ,才能完成每個 IRP。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000。 |
目標平台 | Universal |
標頭 | ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |