管理设备性能状态

Windows Vista 具有增强的电源管理基础结构,使驱动程序堆栈能够更好地管理其设备的电源策略。 驱动程序可以注册,以在系统定义的电源设置更改或发生系统电源事件时收到通知。 设备电源策略所有者可以使用这些通知来适当调整其设备的电源使用情况。 此外,还可以创建自定义电源设置,以提供对特定于设备的电源和性能功能的访问,这些功能可以紧密集成到系统电源策略中。 以下是将设备性能状态和节能行为与系统电源策略集成的两种主要方法。

为设备创建自定义电源设置

注册以收到对活动电源方案、电源方案个性或电源的更改的通知

为设备创建自定义电源设置

可以定义可用于配置设备性能状态或节能行为的自定义电源设置。 有关自定义电源设置的信息由电源管理器保存和管理。 系统中的其他组件(如设备驱动程序、服务或应用程序)可以注册,以在自定义电源设置的值更改时收到通知。 通常,能够权衡性能与功耗的设备应具有相应的自定义电源设置。 创建自定义电源设置是将功耗与系统电源策略紧密集成的最灵活方法,并提供以下附加优势:

  • 无需自定义用户界面即可使自定义电源设置可供用户访问。 所有电源设置(包括自定义电源设置)都会在“电源选项”控制面板的“高级设置”页上向用户显示。

  • 用户和系统管理员可以使用电源管理命令行工具 Powercfg.exe 轻松编写自定义电源设置的配置脚本。

  • (可选)系统管理员可以在 (创建管理模板。ADM) 文件,用于启用新电源设置的基于组策略的配置。

单个电源设置包含唯一标识、命名、描述和提供电源设置值所需的所有信息。 每个电源设置都使用 GUID、设置名称、说明以及交流和 DC 电源方案的默认设置进行定义。 可以使用 INF AddPowerSetting 指令静态地为设备创建自定义电源设置,也可以通过调用随Microsoft Windows SDK文档提供的电源管理参考中包含的 Win32 电源管理功能来动态创建。

驱动程序调用 PoRegisterPowerSettingCallback 来注册一个回调例程,电源管理器调用该例程以通知驱动程序电源设置的更改。 当设置更改时,电源管理器调用回调例程并传递新的设置值。 然后,驱动程序可以采取适合电源设置的操作。 每个设置都由电源设置的 GUID 标识。 系统定义的电源设置 GUID 在 Wdm.h 和 Ntpoapi.h 中定义。

例如,若要在打开或关闭监视器电源时收到通知,驱动程序会调用 PoRegisterPowerSettingCallback,提供标识监视器电源设置 (GUID_MONITOR_POWER_ON) 的 GUID,并提供指向当监视器电源设置的值更改时电源管理器调用的回调例程的指针。

注册以收到对活动电源方案、电源方案个性或电源的更改的通知

主动电源方案的个性传达了用户对系统整体节能行为的意图。 每个电源方案(包括自定义方案)都有一个个性,表明方案的总体意图。 这样就可以创建其他自定义电源方案,同时仍然提供了解方案意图的所有好处。 Windows Vista 包括以下三个系统定义的电源方案及其相应的个性。

最大节能效果
降低性能以最大程度地减少功耗。

自动 (平衡)
允许系统根据总体功耗选择最佳电源状态级别。

最佳性能
无论功耗如何,都能提供最佳性能。

电源可以是交流或 DC 电源。

设备电源策略所有者可以使用有关活动电源方案、电源方案个性和电源的信息来调整设备电源策略。 例如,如果电源方案个性更改为 “最大节能”,设备电源策略所有者可能会主动关闭设备电源。 但是,如果电源方案个性更改为 “最大性能”,则设备电源策略所有者可能会保持其设备的性能级别,而不是降低功耗,并且可能始终让设备保持通电状态,以确保最高级别的性能。

驱动程序可以注册,以在活动电源方案、电源方案个性或电源发生更改时收到通知。 驱动程序调用 PoRegisterPowerSettingCallback 来注册电源管理器调用的回调例程,以通知驱动程序此类更改,如下所示:

  • 若要注册活动电源方案的更改通知,请提供表示电源方案 (GUID_ACTIVE_POWERSCHEME) 设置的 GUID。 然后,每当活动电源方案更改时,电源管理器都会调用回调例程,即使新电源方案的个性与以前的电源方案相同也是如此。

  • 若要注册电源方案个性更改的通知,请提供表示电源方案个性 (GUID_POWERSCHEME_PERSONALITY) 设置的 GUID。 然后,每当活动电源方案发生更改,并且新电源方案的个性不同于以前电源方案的个性时,电源管理器就会调用回调例程。

  • 若要注册电源更改通知,请提供表示电源 (GUID_ACDC_POWER_SOURCE) 设置的 GUID。 然后,每当电源设置更改时,电源管理器都会调用回调例程。

当活动电源方案更改或电源方案个性更改时,电源管理器调用回调例程并传递表示新电源方案或电源方案个性的 GUID。 然后,驱动程序可以采取适合更改的操作。

活动电源方案设置和电源方案个性设置使用以下 GUID 来标识其各自的值:

  • GUID_MAX_POWER_SAVINGS,对应于 最大节能 电源方案及其相应的个性。

  • GUID_MIN_POWER_SAVINGS,对应于 “最高性能 ”电源方案及其相应的个性。

  • GUID_TYPICAL_POWER_SAVINGS,对应于 自动 (平衡) 电源方案及其相应的个性。

当电源更改时,电源管理器调用回调例程并传递表示电源设置的 GUID 和电源设置的值,该值指示计算机是由交流电源、DC 电源还是短期 DC 电源供电。