共用方式為


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_OPTIONALPO_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 陣列索引來識別。 PoFxActivateComponentPoFxCompleteIdleCondition 等例程會使用元件的數組索引來識別元件。

實作所有八個回呼例程不需要設備驅動器。 如果驅動程式未實作對應的回呼例程,驅動程式可以在 PO_FX_DEVICE 結構中將函式指標設定為 NULL。 不過,必須實作某些回呼例程。 具體而言,如果裝置中的一或多個元件具有一個以上的 Fx 狀態,驅動程式必須實作 ComponentIdleStateCallbackComponentActiveConditionCallbackComponentIdleConditionCallback 例程。 否則,裝置註冊會失敗,而 PoFxRegisterDevice傳回STATUS_INVALID_PARAMETER

如果驅動程式未提供其中一個 PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUMEPO_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_SETTINGSPoFxDeviceFlags 欄位來提供這些旗標。

規格需求

需求
最低支援的用戶端 Windows 10 (版本 1903)
標頭 wdm.h

另請參閱

/windows-hardware/drivers/kernel/introduction-to-the-directed-power-management-framework

ComponentActiveConditionCallback

ComponentIdleConditionCallback

ComponentIdleStateCallback

DevicePowerNotRequiredCallback

DevicePowerRequiredCallback

PO_FX_COMPONENT

PoFxActivateComponent

PoFxCompleteIdleCondition

PoFxRegisterDevice

PowerControlCallback