PO_FX_DEVICE_V3 結構 (wdm.h)
PO_FX_DEVICE_V3結構描述裝置對電源管理架構的電源屬性, (PoFx) 、DFx (導向 PoFx)
語法
typedef struct _PO_FX_DEVICE_V3 {
ULONG Version;
ULONGLONG Flags;
PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleConditionCallback;
PPO_FX_COMPONENT_IDLE_STATE_CALLBACK ComponentIdleStateCallback;
PPO_FX_DEVICE_POWER_REQUIRED_CALLBACK DevicePowerRequiredCallback;
PPO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK DevicePowerNotRequiredCallback;
PPO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
PPO_FX_DIRECTED_POWER_UP_CALLBACK DirectedPowerUpCallback;
PPO_FX_DIRECTED_POWER_DOWN_CALLBACK DirectedPowerDownCallback;
ULONG DirectedFxTimeoutInSeconds;
PVOID DeviceContext;
ULONG ComponentCount;
PO_FX_COMPONENT_V2 Components[ANYSIZE_ARRAY];
} PO_FX_DEVICE_V3, *PPO_FX_DEVICE_V3;
成員
Version
這個結構的版本號碼。 如果驅動程式向 DFx 註冊導向電源支援,請將此成員設定為 PO_FX_VERSION_V3。
Flags
控制直接子裝置和電源子裝置是否可以退出宣告 Direct PoFx。
可能的旗標值包括:
旗標 | 描述 |
---|---|
PO_FX_DEVICE_FLAG_DIRECT_CHILDREN_OPTIONAL | 允許此裝置的直接子裝置選擇性地支持導向 PoFx。 如果未設定,則所有直接子系都必須支持導向 PoFx,此裝置才能完全支援 Direct PoFx。 |
PO_FX_DEVICE_FLAG_POWER_CHILDREN_OPTIONAL | 允許此裝置的電源子裝置選擇性地支持導向 PoFx。 如果未提供,則所有電源子系都必須支持導向 PoFx,此裝置才能完全支援有向 PoFx。 |
PO_FX_DEVICE_FLAG_DFX_CHILDREN_OPTIONAL | 設定 PO_FX_DEVICE_FLAG_DIRECT_CHILDREN_OPTIONAL 和 PO_FX_DEVICE_FLAG_POWER_CHILDREN_OPTIONAL |
PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME | 強制 PoFx 防止 S0-IRP 在從 Hibernate 或 Sleep 等系統狀態繼續執行 D0-IRP 之前完成。 與 PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME互斥。 |
PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME | 強制 PoFx 允許在從 Hibernate 或 Sleep 等系統狀態繼續執行 D0-IRP 之前完成 S0-IRP。 與 PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME互斥。 |
ComponentActiveConditionCallback
ComponentActiveConditionCallback 回呼例程的指標,由設備驅動器實作。
ComponentIdleConditionCallback
ComponentIdleConditionCallback 回呼例程的指標,由設備驅動器實作。
ComponentIdleStateCallback
ComponentIdleStateCallback 回呼例程的指標,由設備驅動器實作。
DevicePowerRequiredCallback
DevicePowerRequiredCallback 回呼例程的指標,由設備驅動器實作。
DevicePowerNotRequiredCallback
DevicePowerNotRequiredCallback 回呼例程的指標,由設備驅動器實作。
PowerControlCallback
設備驅動器所實作之 PowerControlCallback 回 呼例程的指標。
DirectedPowerUpCallback
設備驅動器所實作 之PO_FX_DIRECTED_POWER_UP_CALLBACK 回呼例程的指標。 裝置只能在 DirectedPower*
註冊PoFx時提供回呼。 它不需要實作PoFx回呼的其餘部分。
DirectedPowerDownCallback
設備驅動器所實作 之PO_FX_DIRECTED_POWER_DOWN_CALLBACK 回呼例程的指標。
DirectedFxTimeoutInSeconds
提供提示給架構,以秒為單位指定建議的逾時,讓裝置在軟體活動不再存在之後已閑置。 預設值是 2 分鐘。
DeviceContext
呼叫端配置裝置內容的指標。 這個指標會當做參數傳遞至這個 結構所指向的每個驅動程序實作回呼函式。 設備驅動器會使用此內容來儲存裝置目前電源狀態的相關信息。 此內容對 PoFx 而言不透明。
ComponentCount
Components 陣列中的項目數目。 此外,此成員會指定裝置中的元件數目。
Components[ANYSIZE_ARRAY]
這個成員是一或多個PO_FX_COMPONENT_V2元素數位的第一個專案。 如果數位包含多個元素,其他元素會緊接在 PO_FX_DEVICE_V2 結構後面。 數位包含裝置中每個元件的一個專案。 每個元件的 Fx 電源狀態可以獨立控制裝置中其他元件的 Fx 電源狀態。 ANYSIZE_ARRAY常數定義為 Ntdef.h 頭檔中的 1。
備註
若要向PoFx註冊裝置,驅動程式會呼叫 PoFxRegisterDevice 例程,並提供參數作為描述裝置 之PO_FX_DEVICE 結構的指標。 若要使用PoFx而非 DFx,請使用 PO_FX_DEVICE_V2 結構 或 PO_FX_DEVICE_V3 結構向PoFx註冊。
Components 陣列中的每個元素都會描述裝置中一個元件的電源狀態屬性。 裝置中的每個元件都會由其 Components 陣列索引來識別。 PoFxActivateComponent 和 PoFxCompleteIdleCondition 等例程會使用元件的數組索引來識別元件。
實作所有八個回呼例程不需要設備驅動器。 如果驅動程式未實作對應的回呼例程,驅動程式可以在 PO_FX_DEVICE 結構中將函式指標設定為 NULL。 不過,必須實作某些回呼例程。 具體而言,如果裝置中的一或多個元件具有一個以上的 Fx 狀態,驅動程式必須實作 ComponentIdleStateCallback、 ComponentActiveConditionCallback 和 ComponentIdleConditionCallback 例程。 否則,裝置註冊會失敗,而 PoFxRegisterDevice 會 傳回STATUS_INVALID_PARAMETER。
如果驅動程式未提供其中一個 PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME 或 PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME 系統將會回復到平臺的預設設定。 x86/x64 平台的預設組態是PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME,而ARM32/ARM64平臺PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME。 這些旗標只會針對 Win11 22000+ 接受,而且會針對舊版以無訊息方式忽略。 針對WDF驅動程式,您可以使用WDF_POWER_FRAMEWORK_SETTINGS的 PoFxDeviceFlags 欄位來提供這些旗標。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 (版本 1903) |
標頭 | wdm.h |
另請參閱
/windows-hardware/drivers/kernel/introduction-to-the-directed-power-management-framework
ComponentActiveConditionCallback
ComponentIdleConditionCallback