PO_FX_COMPONENT_V1結構 (wdm.h)
PO_FX_COMPONENT 結構描述裝置中元件的電源狀態屬性。
語法
typedef struct _PO_FX_COMPONENT_V1 {
GUID Id;
ULONG IdleStateCount;
ULONG DeepestWakeableIdleState;
PPO_FX_COMPONENT_IDLE_STATE IdleStates;
} PO_FX_COMPONENT_V1, *PPO_FX_COMPONENT_V1;
成員
Id
可唯一識別此元件與裝置中其他元件相關的元件標識碼。 如果電源管理架構 (PoFx) 需要元件標識碼來區分此元件與相同裝置中的其他類似元件,驅動程式應該為此成員指定非零值。 這個成員是選擇性的。 如果未使用這個成員,它必須設定為所有零。
IdleStateCount
由IdleStates成員指向之陣列中的項目數目。 此外,這個成員會指定元件支援的 Fx 電源狀態數目。 元件必須至少支援一個 Fx 狀態 (F0) 。
DeepestWakeableIdleState
元件可從中喚醒的最深 Fx 狀態索引。 針對 F0 指定 0、F1 指定 1,依此類錯。 此索引必須小於 IdleStateCount。
IdleStates
PO_FX_COMPONENT_IDLE_STATE陣列的指標。 這個陣列的長度是由 IdleStateCount 成員所指定。 每個數位元素都會指定元件所支援之 Fx 電源狀態的屬性。 元素 0 描述 F0、元素 1 描述 F1 等等。
備註
當設備驅動器向 PoFx 註冊裝置時,驅動程式會提供保存註冊資訊的 PO_FX_DEVICE 結構。 這個結構包含 PO_FX_COMPONENT 結構的數位。 此陣列中的元素描述裝置中個別元件的電源屬性。 PoFx 會使用此數位資訊來管理這些元件的電源設定。
標識子成員包含PoFx可用來唯一識別元件的元件標識碼。 請勿將元件標識碼與元件索引混淆, PoFxActivateComponent 這類例程會用來識別已註冊裝置中的元件。 元件索引是裝置驅動程式用來向PoFx註冊裝置之PO_FX_DEVICE結構中 Components 陣列的索引。 如果 Components 陣列包含 N 個元素,元件索引是範圍 0 到 N–1 中的整數值。 相反地,元件標識碼是 GUID 值。
如果驅動程式在向 PoFx (註冊期間指定對PO_FX_VERSION_V2的支援,也就是在呼叫 PoFxRegisterDevice 例程期間,驅動程式會針對傳遞至 Device 參數之 PO_FX_DEVICE 結構的 Version 成員指定值PO_FX_VERSION_V2) 。 PO_FX_COMPONENT_FLAG_F0_ON_DX 如果指定 了PO_FX_COMPONENT_FLAG_F0_ON_DX 旗標,PoFx 會在 Dx 轉換期間將元件放入 F0 電源狀態,並等候/喚醒 IRP。 在將 Dx IRP 或等候/喚醒 IRP 分派到裝置堆疊之前, (發生第一個事件) ,電源管理員會將元件轉換為 F0 狀態。 元件會保留在 F0 中,直到喚醒/等候 IRP 取消或完成,或 Dx IRP 已完成,且驅動程式已呼叫 PoFxReportDevicePoweredOn 例程, (最後發生任何事件) 。
元件相依性
PoFx 支援裝置內的邏輯元件相依性 (,但不支援跨不同裝置) 。 在每個元件的裝置註冊期間,驅動程式可以提供數位 (ProviderCount 成員) ,以及 提供者成員 () 此元件相依的元件索引數位;這些稱為 提供者。 PoFx 保證元件在所有提供者都處於作用中狀態之前都不會變成作用中。元件相依性形成導向圖表,其中邊緣會從相依元件指向提供者,並代表相依性。 在裝置註冊期間,PoFx 會驗證相依性圖形:不允許迴圈和重複邊緣,且深度優先搜尋周遊的圖形深度不能超過四個。 PoFx 也會根據相依性圖形設定元件的使用中參考計數;也就是說,每個提供者的作用中參考計數會針對相依的每個元件遞增一次。
在元件啟用期間,PoFx 會先以異步方式啟動所有提供者。 元件作用中之後,PoFx 會檢查每個相依元件,並視需要繼續啟用。
當元件轉換為閑置狀態時,PoFx 會先讓相依元件閑置。 在驅動程式完成 ComponentIdleConditionCallback 和平臺擴充功能外掛程式 (PEP) 收到閑置的通知后,PoFx 會以廣度優先周遊和異步方式閑置每個提供者,以遞歸方式周遊相依性圖形。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始支援。 |
標頭 | wdm.h (包含 Wudfwdm.h) |