警告
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 参数设置为 WdfTrue 或 WdfUseDefault,从而向用户控制设备的空闲功能。
当驱动程序调用 AssignSxWakeSettings 方法时,它可以通过将 UserControlOfWakeSettings 参数设置为 WakeAllowUserControl 并将 Enabled 参数设置为 WdfTrue 或 WdfUseDefault 来向用户控制设备的唤醒功能。
如果驱动程序允许用户修改空闲和唤醒设置,则框架以 Device Manager 显示的属性表页的形式提供用户界面,以便用户可以启用或禁用空闲和唤醒功能。 (框架修改 IdleInWorkingState 和 WakeFromSleepState 注册表值。驱动程序及其安装文件不得读取或修改这些值。
如果用户修改了设备的设置,框架会更新设备的电源状态以匹配新设置(如有必要)。 例如,如果用户在设备处于低功率状态时禁用设备的空闲停电功能,因为它处于空闲状态,框架会将设备返回到其工作状态。
如果驱动程序允许用户修改空闲和唤醒设置,框架默认启用这些设置。 某些驱动程序编写器可能希望在允许用户修改设置之前先禁用这些设置。
因此,框架版本 1.9 及更高版本提供两个可定义驱动程序的注册表值,名为 WdfDefaultIdleInWorkingState 和 WdfDefaultWakeFromSleepState,这些值存储在设备 的设备参数\WDF 子项中的设备 密钥下。 这些值REG_DWORD类型化,其中“0”表示禁用了该功能,“1”表示已启用该功能。
驱动程序的 INF 文件可以使用 INF AddReg 指令 来创建和设置 WdfDefaultIdleInWorkingState 和 WdfDefaultWakeFromSleepState 注册表值。 例如,如果驱动程序启用设备的空闲停电功能,但在安装设备时必须禁用该功能,请将驱动程序 INF 文件中的 WdfDefaultIdleInWorkingState 设置为“0”。
仅当驱动程序将 UserControlOfIdleSettings 参数设置为 IdleAllowUserControl,并将 Enabled 参数设置为 WdfTrue 或 WdfUseDefault,且在驱动程序调用 IWDFDevice2::AssignS0IdleSettings 方法时,该框架才会检查 WdfDefaultIdleInWorkingState 注册表值。
仅当驱动程序将 UserControlOfWakeSettings 参数设置为 IWakeAllowUserControl,并将 Enabled 参数设置为 WdfTrue 或 WdfUseDefault,且驱动程序调用 IWDFDevice2::AssignSxWakeSettings 方法时,该框架才会检查 WdfDefaultWakeFromSleepState 注册表值。