UMDF 中的電源原則擁有權
警告
UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上對 UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。
封存的 UMDF 1 範例可在 Windows 11 版本 22H2 - 2022 年 5 月驅動程式範例更新中找到。
如需詳細資訊,請參閱 開始使用UMDF。
針對每個裝置,裝置的驅動程式中只有一個(且只有一個)必須是裝置的 電源原則擁有者。 電源原則擁有者會決定裝置的適當 裝置電源狀態 ,並在裝置電源狀態應變更時,將要求傳送至裝置的驅動程式堆疊。
架構型驅動程式不包含要求裝置電源狀態變更的程式代碼,因為架構會提供該程序代碼。 根據預設,每當系統進入 系統睡眠狀態時,架構會要求驅動程式讓裝置的總線將裝置電源狀態降低至 D3。 (如果裝置提供喚醒功能,您的驅動程式可以變更預設行為,讓架構將裝置的睡眠狀態設定為 D1 或 D2。當系統電源回到其 運作中 (S0) 狀態時,架構會要求總線驅動程式將裝置還原至其工作狀態 (D0) 狀態。
電源原則擁有者也會負責啟用和停用下列裝置功能:
當裝置閑置時,裝置能夠進入 低功率(睡眠)狀態 ,且系統仍處於運作中狀態(S0) 狀態
裝置偵測到外部事件時,能夠從睡眠狀態喚醒自己
裝置偵測到外部事件時,能夠從系統睡眠狀態喚醒整個系統
如果您的裝置支援這些閑置電源關閉和系統喚醒功能,電源原則擁有者也可以支持架構的 IPowerPolicyCallbackWakeFromS0 和 IPowerPolicyCallbackWakeFromSx 介面,以定義一組電源原則事件回呼函式。
根據預設,UMDF 型驅動程式不是電源原則擁有者。 裝置的核心模式函式驅動程式是預設電源原則擁有者。 (如果沒有內核模式函式驅動程式,且總線驅動程式已呼叫 WdfPdoInitAssignRawDevice,總線驅動程式是電源原則擁有者。 如果您想要讓 UMDF 型驅動程式成為驅動程式堆疊的電源原則擁有者,驅動程式必須呼叫 IWDFDeviceInitialize::SetPowerPolicyOwnership,而內核模式預設電源原則擁有者必須呼叫 WdfDeviceInitSetPowerPolicyOwnership 以停用擁有權。
此外,如果您要為USB裝置提供UMDF型驅動程式,而且如果您想要讓驅動程式成為電源原則擁有者,驅動程式的INF檔案必須包含 INF AddReg指示 詞,以在登錄中設定WinUsbPowerPolicyOwnershipDisabled 值。 如果這個REG_DWORD大小的值設定為任何非零數位,則會停用 WinUSB 驅動程式成為裝置電源原則擁有者的能力。 AddReg 指示詞必須位於 INF DDInstall.HW 區段中,如下列範例所示。
[MyDriver_Install.NT.hw]
AddReg=MyDriver_AddReg
[MyDriver_AddReg]
HKR,,"WinUsbPowerPolicyOwnershipDisabled",0x00010001,1
架構會針對電源原則擁有者執行下列工作:
它會處理驅動程式與驅動程式堆疊其餘部分之間的所有電源原則通訊。 例如,您的驅動程式不需要要求總線驅動程式變更裝置的電源狀態,因為架構會提出要求。
如果您的驅動程式註冊電源原則事件回呼函式,則架構會在啟用或停用裝置從低功率狀態喚醒自身的能力時呼叫它們。
如果您的驅動程式允許使用者修改閑置和喚醒設定,架構會以 裝置管理員 顯示的屬性表頁面形式提供使用者介面。
如需電源原則擁有者責任的詳細資訊,請參閱下列主題: