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,它们存储在设备的 Device Parameters\WDF 子项中的 设备硬件密钥下。 值REG_DWORD类型,“0”表示禁用该功能,“1”表示已启用该功能。

驱动程序的 INF 文件可以使用 INF AddReg 指令 创建和设置 WdfDefaultIdleInWorkingStateWdfDefaultWakeFromSleepState 注册表值。 例如,如果驱动程序启用了设备的空闲电源关闭功能,但如果在安装设备时必须禁用该功能,则驱动程序的 INF 文件可以将 WdfDefaultIdleInWorkingState 设置为“0”。

仅当驱动程序在驱动程序调用 IWDFDevice2:AssignS0IdleSettings 方法时,将 UserControlOfIdleSettings 参数设置为 IdleAllowUserControl 并将 Enabled 参数设置为 WdfTrueWdfUseDefault 时,框架才会检查 WdfDefaultInWorkingState 注册表值。

仅当驱动程序在驱动程序调用 IWDFDevice2::AssignSxWakeSettings 方法时,将 UserControlOfWakeSettings 参数设置为 IWakeAllowUserControl并将 Enabled 参数设置为 WdfTrue 或 WdfUseDefault 时,框架才会检查 WdfDefaultWakeFromSleepState 注册表值。