從 Windows Vista 開始,不需要呼叫 PoStartNextPowerIrp,而且呼叫此例程不會執行電源管理作業。 不過,在 Windows Server 2003、Windows XP 和 Windows 2000 中,篩選驅動程式必須針對驅動程式收到的每個IRP_MN_QUERY_POWER或IRP_MN_SET_POWER要求呼叫 PoStartNextPowerIrp 一次。 當呼叫發生時,取決於要求的類型,以及驅動程式是否會失敗或成功要求,如下表所示。
| 要求類型 | 如果驅動程式成功要求,就會發生呼叫: | 如果驅動程式未能處理請求,會進行呼叫。 |
|---|---|---|
IRP_MN_QUERY_POWER (裝置電源狀態) |
在 IoCompletion 例程中,在返回之前立即執行。 |
在 DispatchPower 例程中,呼叫 IoCompleteRequest 之前。 |
IRP_MN_QUERY_POWER (系統電源狀態) |
在 DispatchPower 例程中,取得移除鎖定權限之後,並且在設定 IRP 堆疊位置之前。 |
在 DispatchPower 例程中,呼叫 IoCompleteRequest 之前。 |
IRP_MN_SET_POWER (裝置電源狀態) |
在 IoCompletion 例程中,緊接在傳回之前。 |
不允許。 |
IRP_MN_SET_POWER (系統電源狀態) |
在 DispatchPower 例程中,取得移除鎖定之後,以及在設定 IRP 堆疊位置之前。 |
不允許。 |