PoStartNextPowerIrp 函式 (wdm.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 上,必須在驅動程式完成先前的電源 IRP 之後,由裝置堆疊中的每個驅動程式呼叫 PoStartNextPowerIrp ,如果有的話,而且已準備好處理下一個電源 IRP。 每個驅動程式都必須針對每個 IRP_MN_QUERY_POWER 或 IRP_MN_SET_POWER 要求呼叫一次。
雖然電源 IRP 只會完成一次,通常是由裝置的總線驅動程式完成,但裝置堆疊中的每個驅動程式都必須呼叫 PoStartNextPowerIrp ,因為 IRP 會向下移動或備份堆疊。 即使驅動程式失敗 IRP,驅動程式仍必須呼叫 PoStartNextPowerIrp ,以向電源管理員發出已準備好處理另一個電源 IRP 的訊號。
驅動程式必須在目前的 IRP 堆疊位置指向目前的驅動程式時呼叫 PoStartNextPowerIrp 。 因此,此例程必須在 IoCompleteRequest、 IoSkipCurrentIrpStackLocation和 PoCallDriver之前呼叫。 一般規則是,驅動程式應該從與 IRP 相關聯的 IoCompletion 例程呼叫 PoStartNextPowerIrp,或從傳遞給 PoRequestPowerIrp 的回呼例程呼叫 PoStartNextPowerIrp。
公交車驅動程序必須先呼叫 PoStartNextPowerIrp ,才能完成每個 IRP。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |