IAdapterPowerManagement::P owerChangeState 方法 (portcls.h)

方法 PowerChangeState 會要求裝置變更為新的電源狀態。

語法

void PowerChangeState(
  [in] POWER_STATE NewState
);

參數

[in] NewState

指定要求裝置的新電源狀態。 此參數是類型POWER_STATE的聯集。 新的電源狀態 (NewStateDeviceState) 可以是下表所示 的其中 一個DEVICE_POWER_STATE列舉值。

電源狀態 意義
PowerDeviceD0 完整電源狀態 (D0) 。 此程式代碼可能是目前電源狀態的函式。 儲存新狀態。 這個本機值可用來判斷何時快取屬性存取,以及何時允許驅動程式存取硬體。
PowerDeviceD1 針對返回 D0 所需的延遲時間,具有最低延遲的睡眠狀態
PowerDeviceD2 中等延遲睡眠狀態。 在此狀態下,設備驅動器無法假設它可以觸碰硬體,因此任何存取都必須快取,並在輸入 D0 時還原硬體。
PowerDeviceD3 完整休眠狀態,且是最長延遲睡眠狀態。 驅動程式無法存取處於此狀態的硬體,而且必須在返回 D0 或 D1 時快取任何硬體存取並還原硬體

傳回值

備註

PortCls 會呼叫 PowerChangeState 方法來回應 IRP_MN_SET_POWER 電源 IRP。 此呼叫不得失敗。 PortCls 和系統會使用 PowerChangeState 呼叫將裝置置於所需的電源狀態。 當系統嘗試暫停或繼續使用中的音訊串流時,驅動程式必須能夠適當地儲存或還原其裝置內容。

為了協助驅動程式,PortCls 會在呼叫此方法之前暫停任何作用中的音訊串流,以將裝置置於睡眠狀態。 呼叫此方法之後,PortCls 會取消暫停作用中的音訊串流,以喚醒裝置。 迷你埠可以使用 IPowerNotify 介面來選擇其他通知。

迷你埠驅動程序必須在從呼叫傳回 PowerChangeState 之前,先對裝置的電源狀態執行要求的變更。 如果迷你埠驅動程式需要在電源狀態變更之前儲存或還原任何裝置狀態,迷你埠驅動程序應該支援 IPowerNotify 介面,這可讓它收到任何這類變更的預先警告。 從成功 PowerChangeState 呼叫傳回之前,迷你埠驅動程序應該會快取新的電源狀態。

雖然迷你埠驅動程序處於其中一種睡眠狀態, (PowerDeviceD0) 以外的任何狀態,但必須避免寫入硬體。 迷你埠驅動程序必須快取任何需要延遲的硬體存取,直到裝置再次啟動為止。 如果電源狀態從其中一個睡眠狀態變更為PowerDeviceD0,迷你埠驅動程式在啟動裝置之後,應該執行任何延遲的硬體存取。 如果電源狀態從 PowerDeviceD0 變更為睡眠狀態,迷你埠驅動程式可以在呼叫期間 PowerChangeState 執行任何必要的硬體存取,再關閉裝置。

關閉電源時,永遠不會要求迷你埠驅動程式建立迷你埠驅動程序對象或數據流物件。 PortCls 一律會將裝置置於 PowerDeviceD0 狀態,再呼叫迷你埠驅動程式的 NewStream 方法。

這個方法的程式代碼必須位於分頁記憶體中。

規格需求

需求
目標平台 Universal
標頭 portcls.h (包括 Portcls.h)

另請參閱

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER