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 消費者入門

如果裝置具有閒置電源或喚醒功能,您可以決定是否允許使用者啟用或停用這些功能。

UMDF 型驅動程式可以使用 IWDFDevice2::AssignS0IdleSettings 方法來指定具有登錄存取權的使用者是否可以啟用或停用裝置的閒置電源關閉功能。

您的驅動程式可以使用 IWDFDevice2::AssignSxWakeSettings 方法來指定具有登錄存取權的使用者是否可以啟用或停用裝置的喚醒功能。

這兩種方法都允許驅動程式啟用功能、停用功能,或讓使用者控制功能:

  • 當驅動程式呼叫 AssignS0IdleSettings 方法時,可以將 UserControlOfIdleSettings 參數設定為 IdleAllowUserControl ,並將 Enabled 參數設定為 WdfTrueWdfUseDefault,讓使用者控制裝置的閒置功能。

  • 當驅動程式呼叫 AssignSxWakeSettings 方法時,可以將 UserControlOfWakeSettings 參數設定為 WakeAllowUserControl ,並將 Enabled 參數設定為 WdfTrueWdfUseDefault,讓使用者控制裝置的喚醒功能。

如果您的驅動程式允許使用者修改閒置和喚醒設定,架構會以裝置管理員顯示的屬性工作表頁面形式提供使用者介面,讓使用者能夠啟用或停用閒置和喚醒功能。 (架構會修改 IdleInWorkingStateWakeFromSleepState 登錄值。驅動程式及其安裝檔案不得讀取或修改這些值。)

如果使用者修改裝置的設定,架構會視需要更新裝置的電源狀態以符合新的設定。 例如,如果使用者停用裝置的閒置電源關閉功能,而裝置已處於低電源狀態,因為裝置處於閒置狀態,架構就會將裝置傳回其運作狀態。

如果您的驅動程式允許使用者修改閒置和喚醒設定,架構預設會啟用這些設定。 某些驅動程式寫入器可能想要先停用設定,再允許使用者修改設定。

因此,1.9 版和更新版本的架構會在裝置的硬體金鑰下,提供兩個名為WdfDefaultIdleInWorkingStateWdfDefaultWakeFromSleepState的驅動程式可定義登錄值。 這些值REG_DWORD類型,其中 「0」 表示功能已停用,而 「1」 表示已啟用此功能。

驅動程式的 INF 檔案可以使用 INF AddReg 指示詞 來建立及設定 WdfDefaultIdleInWorkingStateWdfDefaultWakeFromSleepState 登錄值。 例如,如果您的驅動程式啟用裝置的閒置電源關閉功能,但如果安裝裝置時必須停用此功能,驅動程式的 INF 檔案可以將 WdfDefaultIdleInWorkingState 設定為 「0」。

只有當驅動程式將UserControlOfIdleSettings參數設定為IdleAllowUserControl,而且當驅動程式呼叫IWDFDevice2::AssignS0IdleSettings方法時,架構才會檢查WdfDefaultIdleInWorkingState登錄值。

只有當驅動程式將UserControlOfWakeSettings參數設定為IWakeAllowUserControl,且驅動程式呼叫 IWDFDevice2::AssignSxWakeSettings方法時,架構才會檢查WdfDefaultWdfDefaultWdfDefaultWdfTrueWdfUseDefault