裝置電源管理參考

驅動程式可以將其裝置硬體分成多個邏輯元件,以啟用更精細的電源管理。 元件有一組電源狀態,可以獨立於相同裝置中其他元件的電源狀態進行管理。 在 F0 狀態中,元件已完全開啟。 元件可能支持額外的低電源狀態 F1、F2 等等。

裝置的電源原則擁有者通常是裝置的函式驅動程式。 若要開啟元件層級電源管理,此驅動程式會向 電源管理架構註冊裝置, (PoFx) 。 藉由註冊裝置,驅動程式會負責在主動使用元件時以及元件閑置時通知PoFx。 PoFx 會根據元件活動、延遲容錯、預期的閑置持續時間和喚醒需求的相關信息,為裝置做出智慧型手機閑置狀態選擇。 藉由控制元件層級的電源使用量,PoFx 可以降低電源需求,同時保留系統回應性。 如需詳細資訊,請參閱 元件層級電源管理

裝置電源管理例程

這些例程是由電源管理架構實作 (PoFx) ,以啟用裝置電源管理。 這些例程是由驅動程式呼叫,也就是裝置的電源原則擁有者 (PPO) 。 一般而言,裝置的函式驅動程式是此裝置的 PPO。

主題 描述
PoFxActivateComponent PoFxActivateComponent 例程會遞增指定元件上的啟用參考計數。
PoFxCompleteDevicePowerNotRequired PoFxCompleteDevicePowerNotRequired 例程會通知電源管理架構 (PoFx) 呼叫驅動程式已完成對驅動程式 DevicePowerNotRequiredCallback 回呼例程的回應。
PoFxCompleteIdleCondition PoFxCompleteIdleCondition 例程會通知 Power Management Framework (PoFx) 指定的元件已完成閑置條件的擱置變更。
PoFxCompleteIdleState PoFxCompleteIdleState 例程會通知 Power Management Framework (PoFx) 指定的元件已完成 Fx 狀態的擱置變更。
PoFxIdleComponent PoFxIdleComponent 例程會遞減指定元件上的啟用參考計數。
PoFxIssueComponentPerfStateChange PoFxIssueComponentPerfStateChange 例程會提交要求,以將裝置元件置於特定效能狀態。
PoFxIssueComponentPerfStateChangeMultiple PoFxIssueComponentPerfStateChangeMultiple 例程會提交要求,以同時變更裝置元件的多個效能狀態集合中的效能狀態。
PoFxNotifySurprisePowerOn PoFxNotifySurprisePowerOn 例程會通知電源管理架構 (PoFx) 裝置已開啟,作為提供電源給其他裝置的副作用。
PoFxPowerControl PoFxPowerControl 例程會將電源控制要求傳送至電源管理架構, (PoFx) 。
PoFxQueryCurrentComponentPerfState PoFxQueryCurrentComponentPerfState 例程會擷取元件效能狀態集中的作用中效能狀態。
PoFxRegisterComponentPerfStates PoFxRegisterComponentPerfStates 例程會註冊裝置元件,以供電源管理架構 (PoFx) 進行效能狀態管理。
PoFxRegisterDevice PoFxRegisterDevice 例程會向電源管理架構註冊裝置, (PoFx) 。
PoFxReportDevicePoweredOn PoFxReportDevicePoweredOn 例程會通知 Power Management Framework (PoFx) 裝置已完成要求轉換至 D0 (完全處於電源狀態) 。
PoFxSetComponentLatency PoFxSetComponentLatency 例程會指定在從閑置條件轉換為指定元件中作用中條件時可容許的最大延遲。
PoFxSetComponentResidency PoFxSetComponentResidency 例程會設定元件在進入閑置條件之後,可能保持閑置時間的估計時間。
PoFxSetComponentWake PoFxSetComponentWake 例程指出每當元件進入閑置條件時,驅動程式是否要叫用指定的元件來喚醒。
PoFxSetDeviceIdleTimeout PoFxSetDeviceIdleTimeout 例程會指定裝置最後一個元件進入閑置條件的最小時間間隔,當電源管理架構 (PoFx) 呼叫驅動程式的 DevicePowerNotRequiredCallback 回呼例程時。
PoFxStartDevicePowerManagement PoFxStartDevicePowerManagement 例程會使用電源管理架構完成裝置的註冊, (PoFx) 並啟動裝置電源管理。
PoFxUnregisterDevice PoFxUnregisterDevice 例程會從電源管理架構中移除裝置的註冊, (PoFx) 。

裝置電源管理回呼

電源管理架構需要這些回呼例程, (PoFx) 才能啟用裝置電源管理。 為裝置電源原則擁有者的驅動程式會實作這些回呼例程。 PoFx 會呼叫這些例程來查詢及設定裝置中元件的電源狀態。

主題 描述
ComponentActiveConditionCallback ComponentActiveConditionCallback 回呼例程會通知驅動程式指定的元件已完成從閑置條件轉換為使用中條件的轉換。
ComponentIdleConditionCallback ComponentIdleConditionCallback 回呼例程會通知驅動程式指定的元件已完成從使用中條件轉換為閑置條件的轉換。
ComponentIdleStateCallback ComponentIdleStateCallback 回呼例程會通知驅動程式對指定元件的 Fx 電源狀態進行擱置變更。
ComponentPerfStateCallback ComponentPerfStateCallback 回呼例程會通知驅動程式其變更元件效能狀態的要求已完成。
DevicePowerNotRequiredCallback DevicePowerNotRequiredCallback 回呼例程會通知裝置驅動程式,裝置不需要保持 D0 電源狀態。
DevicePowerRequiredCallback DevicePowerRequiredCallback 回呼例程會通知裝置驅動程式裝置必須進入並維持在 D0 電源狀態。
PowerControlCallback PowerControlCallback 回呼例程會執行電源管理架構 (PoFx) 所要求的電源控制作業。

裝置電源管理結構

PoFx (電源管理架構) 會定義這些結構來支援裝置電源管理。

主題 描述
PO_FX_COMPONENT_V1PO_FX_COMPONENT_V2 PO_FX_COMPONENT 結構描述裝置中元件的電源狀態屬性。
PO_FX_COMPONENT_IDLE_STATE PO_FX_COMPONENT_IDLE_STATE 結構會指定裝置中元件之 Fx 電源狀態的屬性。
PO_FX_COMPONENT_PERF_INFO PO_FX_COMPONENT_PERF_INFO 結構描述裝置內單一元件的所有效能狀態集。
PO_FX_COMPONENT_PERF_SET PO_FX_COMPONENT_PERF_SET 結構代表裝置內單一元件的一組效能狀態。
PO_FX_DEVICE_V1PO_FX_DEVICE_V2PO_FX_DEVICE_V3 PO_FX_DEVICE 結構描述裝置對電源管理架構的電源屬性, (PoFx) 。
PO_FX_PERF_STATE PO_FX_PERF_STATE 結構代表裝置內單一元件的效能狀態。
PO_FX_PERF_STATE_CHANGE PO_FX_PERF_STATE_CHANGE 結構包含呼叫 PoFxIssueComponentPerfStateChangePoFxIssueComponentPerfStateChangeMultiple 例程所要求之效能狀態變更的相關信息。

裝置電源管理列舉

PoFx) (電源管理架構會定義這些列舉來支援裝置電源管理。

主題 描述
PO_FX_PERF_STATE_TYPE PO_FX_PERF_STATE_TYPE列舉包含值,這些值描述PO_FX_COMPONENT_PERF_SET中的效能狀態類型。
PO_FX_PERF_STATE_UNIT PO_FX_PERF_STATE_UNIT列舉包含值,這些值描述PO_FX_COMPONENT_PERF_SET中效能狀態所控制的單位類型。

裝置電源管理常數

PO_FX_FLAG_XXX旗標位

PO_FX_FLAG_XXX常數是旗標位,指出變更元件條件的要求是以同步或異步方式執行。

#define PO_FX_FLAG_BLOCKING   0x1
#define PO_FX_FLAG_ASYNC_ONLY 0x2

PO_FX_FLAG_XXX常數

常數 描述
PO_FX_FLAG_BLOCKING 讓條件變更同步。 如果設定此旗標,要求條件變更的例程不會將控制權傳回呼叫驅動程式,直到元件硬體完成轉換至新條件為止。 只有當呼叫端在 IRQL < DISPATCH_LEVEL執行時,才能使用此旗標。
PO_FX_FLAG_ASYNC_ONLY 讓條件變更完全異步。 如果設定此旗標,呼叫驅動程式的回呼例程會從呼叫條件變更的線程以外的線程呼叫。 因此,要求條件變更的例程一律會以異步方式傳回,而不需要等待回呼完成。

PO_FX_FLAG_XXX備註

下列例程的 Flags 參數可以設定為 PO_FX_FLAG_XXX 常數:

PO_FX_FLAG_BLOCKINGPO_FX_FLAG_ASYNC_ONLY旗標位互斥。 呼叫端可以在 Flags 參數中設定一個或其他旗標位,但不能同時設定兩個旗標位。

PO_FX_FLAG_XXX需求

版本 標頭
從 Windows 8 開始支援。 Wdm.h

PO_FX_FLAG_PERF_XXX旗標位

PO_FX_FLAG_PERF_XXX常數是旗標位,定義Power Management Framework (PoFx) 如何管理裝置元件的效能狀態。

#define PO_FX_FLAG_PERF_PEP_OPTIONAL   0x1
#define PO_FX_FLAG_PERF_QUERY_ON_F0 0x2
#define PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 0x4
常數 Description
PO_FX_FLAG_PERF_PEP_OPTIONAL 1 (0x1) 指出驅動程式可以變更效能狀態,而不需要平臺擴充功能外掛程式的協助, (PEP) ,或驅動程式只為了記錄目的向PoFx註冊效能狀態。 如果設定此旗標,如果 PEP 不支援元件的效能狀態, PoFxRegisterComponentPerfStates 呼叫仍然會成功。
PO_FX_FLAG_PERF_QUERY_ON_F0 2 (0x2) 對於某些裝置,PEP 可能需要將元件的效能狀態設定為特定效能狀態, (稱為閑置元件時) 效能狀態 。 如果元件包含名義效能狀態,驅動程式會設定此旗標,在此情況下,PoFx 會查詢 PEP,以判斷元件轉換為 F0 時的目前效能狀態。
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES 4 (0x4) 對於某些裝置,PEP 可能需要將元件的效能狀態設定為特定效能狀態, (稱為在閑置狀態之間轉換元件時,) 所謂的 效能狀態 。 如果此元件包含名義效能狀態,驅動程式會設定此旗標,在此情況下,PoFx 會查詢 PEP,以在元件在閑置狀態之間轉換時判斷目前的效能狀態。

PO_FX_FLAG_PERF_XXX備註

PoFxRegisterComponentPerfStates 例程的 Flags 參數可以設定為PO_FX_FLAG_PERF_XXX常數。

PO_FX_FLAG_PERF_XXX需求

規格需求 版本
從Windows 10 開始支援。 Wdm.h