共用方式為


處理裝置電源原則擁有者中的系統Set-Power IRP

為了回應系統設定電源 IRP,裝置堆疊的 電源原則擁有者 負責將其裝置堆疊放入適當的裝置電源狀態。

一般規則是,當裝置電源原則擁有者收到系統電源狀態 的IRP_MN_SET_POWER 時,它應該透過將系統設定電源 IRP 傳遞至裝置堆疊來回應。 裝置電源原則擁有者也應該透過在IoCompletion常式中傳送裝置堆疊IRP_MN_SET_POWER來回應對應的裝置電源狀態。 在堆疊中的所有驅動程式都已完成裝置集電源 IRP 之後,裝置電源原則擁有者就會完成系統設定電源 IRP。

不過,為了改善系統繼續效能,沒有子裝置之裝置的裝置電源擁有者應該使用不同的方法來減少系統從睡眠狀態返回工作狀態 S0所需的時間。 在此情況下,為了回應將系統傳回至工作狀態 S0 的系統設定電源 IRP,裝置電源原則擁有者應該執行下列作業順序:

  1. 在驅動程式的 DispatchPower 常式中收到 S0 系統電源狀態的IRP_MN_SET_POWER IRP 之後,請設定 IRP 的IoCompletion常式,並將 IRP 向下傳遞堆疊。

  2. 在步驟 (1) 中設定的 IoCompletion 常式中,針對對應的裝置電源狀態要求 IRP_MN_SET_POWER IRP,然後立即完成系統設定電源 IRP。 驅動程式在完成系統設定電源 IRP 之前,不應該等待裝置設定電源 IRP 完成。 IoCompletion常式會在所有較低層級的驅動程式完成系統集電源 IRP 之後執行,並將系統設定電源 IRP 傳回驅動程式的功能裝置物件, (FDO) 。

  3. 執行任何必要的裝置特定初始化。

  4. 完成步驟 (2) 中傳送的裝置設定電源 IRP。

  5. 處理裝置處於 睡眠狀態時已排入佇列的 I/O 要求。

核心電源管理員有一組有限的 IRP 分派佇列,而且必須快速通知系統中所有裝置,以返回系統工作狀態 S0。 無法儘快完成系統設定電源 IRP 的驅動程式會防止其他裝置取得其系統設定電源 IRP,這可能會對系統電源狀態轉換期間的整體系統效能造成負面影響。

如需處理系統設定電源 IRP 的詳細資訊,請參閱下列各項:

判斷正確的裝置電源狀態

傳送裝置Set-Power IRP 以回應系統Set-Power IRP