共用方式為


呼叫 PoStartNextPowerIrp

從 Windows Vista 開始,不需要呼叫 PoStartNextPowerIrp ,而且此例程的呼叫不會執行任何電源管理作業。 不過,在 Windows Server 2003、Windows XP 和 Windows 2000 中,驅動程式處理查詢電源 IRP 或設定電源 IRP 之後,驅動程式必須呼叫 PoStartNextPowerIrp ,通知電源管理員已準備好接收另一個電源 IRP。 驅動程式必須呼叫 PoStartNextPowerIrp ,而 IRP 堆棧位置指向目前的驅動程式,以及呼叫 PoCallDriver 之前。

驅動程式必須針對它收到的每個 IRP_MN_QUERY_POWERIRP_MN_SET_POWER 要求呼叫此例程一次。 處理IRP_MN_WAIT_WAKEIRP_MN_POWER_SEQUENCE要求時,驅動程式不需要呼叫PoStartNextPowerIrp

當驅動程式呼叫 PoStartNextPowerIrp 時,目前的 IRP 堆疊位置必須指向目前的驅動程式。 一般情況下,此呼叫最好是從 IoCompletion 例程進行。 必須在IoCompleteRequestIoSkipCurrentIrpStackLocationPoCallDriver之前呼叫PoStartNextPowerIrp。 依其他順序呼叫例程可能會導致系統死結。

即使驅動程式在處理 IRP 時失敗,仍必須呼叫 PoStartNextPowerIrp ,以通知電源管理系統它已準備好處理另一個電源 IRP。

下列各節會釐清每種驅動程式類型應呼叫此例程的時機:

從篩選驅動程式呼叫PoStartNextPowerIrp

由裝置電源策略擁有者呼叫PoStartNextPowerIrp

從總線驅動程式呼叫PoStartNextPowerIrp