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 的支援,Flags 成員可能會設定為 PO_FX_COMPONENT_FLAG_F0_ON_DX 值(也就是,在呼叫 PoFxRegisterDevice 例程時,驅動程式會指定 Version 成員的值 PO_FX_VERSION_V2 所傳遞 PO_FX_DEVICE 結構的成員至 Device 參數)。 如果指定 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) |