使用者控制裝置閒置和喚醒行為
如果裝置具有閒置電源或喚醒功能,您可以決定是否允許使用者啟用或停用這些功能。
您的驅動程式可以使用 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 結構的成員來指定具有登錄存取權的使用者是否可以啟用或停用裝置的閒置電源關閉功能。
您的驅動程式可以使用 WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 結構的成員,指定具有登錄存取權的使用者是否可以啟用或停用裝置的喚醒功能。
這兩個結構都允許驅動程式啟用功能、停用功能,或讓使用者控制功能。 若要提供使用者控制權,在適當的設定結構中,驅動程式會將 UserControlOfIdleSettings 或 UserControlOfWakeSettings 成員分別設定為 IdleAllowUserControl 或 WakeAllowUserControl,並將 Enabled 成員分別設定為 WdfTrue 或 WdfUseDefault。
如果您的驅動程式允許使用者修改閒置和喚醒設定,架構會以裝置管理員顯示的屬性工作表頁面形式提供使用者介面,讓使用者能夠啟用或停用閒置和喚醒功能。 (架構會修改 IdleInWorkingState 和 WakeFromSleepState 登錄值。驅動程式及其安裝檔案 不得 讀取或修改這些值。)
如果使用者修改裝置的設定,架構會視需要更新裝置的電源狀態以符合新的設定。 例如,如果使用者在裝置處於低電源狀態時停用裝置的閒置電源關閉功能,因為裝置處於閒置狀態,架構會將裝置傳回其工作狀態。
如果您的驅動程式允許使用者修改閒置和喚醒設定,則架構預設會啟用這些設定。 某些驅動程式寫入器可能想要先停用設定,再允許使用者修改設定。
因此,針對 1.9 版和更新版本的 KMDF,架構會在裝置的硬體機碼下提供兩個名為WdfDefaultIdleInWorkingState和WdfDefaultWakeFromSleepState的驅動程式可定義登錄值。 這些值會REG_DWORD類型,其中 「0」 表示功能已停用,而 「1」 表示功能已啟用。
驅動程式的 INF 檔案可以使用 INF AddReg 指示 詞來建立及設定 WdfDefaultIdleInWorkingState 和 WdfDefaultWakeFromSleepState 登錄值。 例如,如果您的驅動程式啟用裝置的閒置電源關閉功能,但如果在安裝裝置時必須停用此功能,驅動程式的 INF 檔案可以將 WdfDefaultIdleInWorkingState 設定為 「0」。
只有在驅動程式已在適當的設定結構中將UserControlOfIdleSettings 或 UserControlOfWakeSettings成員設定為IdleAllowUserControl 或 WakeAllowUserControl或WakeAllowUserControl時,架構才會檢查WdfDefaultWakeWakeState 和 WdfDefault的WdfTrue或WdfUseDefault登錄值。