INF AddPowerSetting 指令

AddPowerSetting 指令引用用于修改或创建电源设置信息的一个或多个部分。 每个 add-power-setting-section 定义电源设置、电源设置的允许值、电源设置的友好名称和电源设置的说明。 add-power-setting-section 还指定每个电源方案个性的默认值。 有关电源设置和电源方案个性的详细信息,请参阅 管理设备性能状态

[DDInstall] | 
[DDInstall.HW] | 
[DDInstall.CoInstallers] | 
[ClassInstall32] | 
[ClassInstall32.ntx86] | 
[ClassInstall32.ntia64] |  (Windows Vista)
[ClassInstall32.ntamd64] | (Windows Vista)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows)
[ClassInstall32.ntarm64] (Windows 10 version 1709 and later versions of Windows)

AddPowerSetting=add-power-setting-section[,add-power-setting-section]

通常, add-power-setting-section 包含以下指令:

  • SubGroup 指令。

  • Setting 指令

  • 两个或多个 Value 指令或一个 ValueRange 指令的列表。

  • 一组六个 Default 指令。

add-power-setting-section 采用以下两种可能的形式之一:

  • 如果允许的电源设置值最好定义为一组两个或多个离散值,请使用 Value 指令列表来指定允许的值,如下所示:

    [add-power-setting-section]
    
    [SubGroup = {subgroup-guid}] | SubGroup = {subgroup-guid}, subgroup-name, subgroup-description, subgroup-icon
    Setting = {setting-guid}, [setting-name],[setting-description],[setting-icon]
    Value = value-index, value-name,[value-description], value-flags, value-data 
    Value = value-index, value-name,[value-description], value-flags, value-data
    [Value = value-index, value-name,[value-description], value-flags, value-data
    ...
    Value = value-index, value-name,[value-description], value-flags, value-data]
    
    (Six required Default directives, each one of which has the following form)
    Default = power-scheme-personality-GUID, AC/DC-index, default-setting-index | default-setting-value 
    ...
    
  • 如果允许的电源设置值最好定义为指定范围内非否定整数值的递增序列,请使用一个 ValueRange 指令指定允许的值,如下所示:

    [add-power-setting-section]
    
    [SubGroup = {subgroup-guid}] | 
    SubGroup = {subgroup-guid}, subgroup-name, subgroup-description, subgroup-icon
    Setting = {setting-guid}, [setting-name],[setting-description],[setting-icon]
    ValueRange = range-minimum-value, range-maximum-value, range-increment, [range-unit-label] 
    
    (Six required Default directives, each one of which has the following form)
    Default = power-scheme-personality-GUID, AC/DC-index, default-setting-index | default-setting-value 
    ...
    

注意

值数据 条目外,以下所有提供字符串值的条目都可以按照 指定 AddPowerSetting 字符串条目值中所述的方式之一指定字符串。

小组
子组对逻辑相关的电源设置进行分组。

若要指定系统定义的子组,请包含 SubGroup 指令并仅提供 子组 guid 条目。 系统定义的子组由 Wdm.h 中定义的常量 GUID_Xxx_SUBGROUP 和 NO_SUBGROUP_GUID 表示。

例如,GUID_VIDEO_SUBGROUP表示包含电源方案个性的视频电源设置的子组。 NO_SUBGROUP_GUID常量表示逻辑上不属于任何子组的设置集合。 如果未包含 SubGroup 指令,则默认情况下会将该设置添加到逻辑上不属于任何子组的设置集合中。

若要定义新的子组,请包含 SubGroup 指令并提供以下必需条目: subgroup-guidsubgroup-namesubgroup-descriptionsubgroup-icon。 新子组的 GUID 必须唯一,其他条目应尽可能具有描述性。

subgroup-guid
所需的条目提供标识子组的 GUID。 此项的格式为 {XXXXXXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXX},其中“X”是十六进制数字。

例如,系统定义常量GUID_VIDEO_SUBGROUP的值为 {7516B95F-F776-4464-8C53-06167F40CC99}。 此 GUID 表示包含电源方案个性的视频电源设置的子组。

subgroup-name
一个指定电源设置的子组名称的字符串。 如果子组是系统定义的子组,则不应提供此项。 如果子组是新的,则此项是必需的。

subgroup-description
向用户描述电源子组的字符串。 如果子组是系统定义的子组,则不应提供此项。 如果子组是新的,则此项是必需的。

subgroup-icon
对图标资源的引用。 如果子组是系统定义的子组,则不应提供此项。 如果子组是新的,则此项是必需的。

必须将图标资源指定为非特定语言的注册表值。 有关如何指定非特定语言的注册表值的信息,请参阅 指定 AddPowerSetting 字符串条目值

设置
Setting 指令标识节中的所有其他条目所适用的设置。 add-power-setting 节中需要一个 Setting 指令,并且 add-power-setting 节中只能有一个 Setting 指令。 如果 INF 文件定义了多个设置,则必须在其自己的 add-power-setting 节中定义每个设置。

下面是与 Setting 指令关联的条目。

setting-guid
一个必需的条目,指定表示电源设置的 GUID。 此条目的格式为 {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXX},其中每个“X”都是十六进制数字。

例如,下面是自定义 GUID 值:{BFC0D9E9-549C-483D-AD2A-3D90C98A8B03}。

setting-name
一个可选条目,指定包含电源设置友好名称的字符串。 控制面板中的“电源选项”向用户显示此友好名称。

setting-description
一个可选条目,指定一个字符串,用于向用户描述电源设置以及设置对系统电源和性能的影响。

setting-icon
一个可选条目,它是对图标资源的引用。 图标资源必须由非特定语言的注册表值指定。

有关如何指定语言中性注册表值的信息,请参阅 指定 AddPowerSetting 字符串条目值


Value 指令定义电源设置的允许值。 如果值最好定义为一组两个或多个值,其中每个值可以具有值特定的自定义数据类型,则应使用 Value 指令。 在这种情况下,add-power-setting-section 应包含两个或更多 Value 指令。 用户可以在控制面板的“电源选项”中选择其中一个值来配置电源方案。

如果允许的幂设置值最好描述为范围内非负整数的递增集,请使用 ValueRange 指令而不是 Value 指令来指定允许的幂设置值。

value-index
指定唯一索引值(大于或等于零)并用于引用相应设置值的必需条目。 控制面板 中的电源选项按相应的索引值(从低到高)向用户显示电源设置值。

value-name
一个必需的条目,它提供一个字符串,该字符串为相应的设置值提供友好名称。 控制面板 中的电源选项向用户显示电源设置值的友好名称。

value-description
一个可选条目,提供一个字符串,向用户描述电源设置值以及设置值对系统电源和性能的影响。

value-flags
指定相应值数据条目的数据类型的必需条目,如下表所示。

标志值 数据类型
0x00000001 REG_BINARY
0x00010001 REG_DWORD
0x00000000 REG_SZ

value-data
为相应的设置值提供数据的必需条目,其格式取决于相应 值标志 条目指定的数据类型,如下所示:

  • 可以使用 0x 表示法以十六进制格式指定 REG_BINARY 值,也可以指定为不使用 0x 表示法的成对十六进制数的逗号分隔列表。

    例如,以下条目等效:0xFEDCBA9876543210和以下逗号分隔的十六进制数字配对列表:FE、DC、BA、98、76、54、32、10。

  • 可以使用 0x 表示法) 或十进制格式以十六进制格式 (指定REG_DWORD值。

  • REG_SZ值只能表示为用双引号括起来的字符串 (“quoted-string”) ,或表示为 INF 文件的 INF Strings 节中定义的 %strkey% 标记。

注意

不应使用字符串值,因为它们无法本地化。 请改用 REG_BINARYREG_DWORD 类型的值。

ValueRange
如果允许的电源设置值最好定义为指定范围内的非负整数值的递增序列,请使用 ValueRange 指令。 电源管理器验证用户在 控制面板 中的“电源选项”中选择的设置是否为这些允许的值之一。 允许的值集由允许的最小值、允许的最大值以及范围内允许的值之间的增量决定。 如果满足以下条件,则允许使用 值:

range-minimum-value + k*range-increment

如果 range-minimum-value 大于或等于零, krange-increment 大于或等于 1,并且该值小于或等于 range-maximum-value。 此外, 对于某些 k,range-maximum-value 应等于 range-minimum-value + k*range-increment

例如,对于 范围最小值 等于 0、 范围最大值 等于 10 和 范围增量 等于 2,允许的值如下所示:0、2、4、6、8 和 10。

如果允许的电源设置值可以最好地描述为值列表,其中每个值都可以具有值特定的自定义数据类型,请使用 Value 指令而不是 ValueRange 指令。

range-minimum-value
REG_DWORD 类型的值,该值指定允许的最小功率设置。

range-maximum-value
类型为 REG_DWORD 的值,该值指定允许的最大功率设置值。 对于大于零的整数 k,最大值必须大于或等于最小值,并且应等于 range-minimum-value + k*range-increment

range-increment
大于零的 REG_DWORD 类型的值。 此值指定由 range-minimum-value 和 range-maximum-value 指定的非独占范围内连续 之间的差异。

range-unit-label
描述电源设置值的可选字符串。 字符串与 设置名称一起通知用户要输入的数据类型。

例如,字符串可用于指定值单位,例如“分钟”或“%” (表示) 百分比。

Default
AddPowerSetting 节中必须包含六个 Default 指令。 Default 指令指定适用于交流电源状态的三个系统定义的电源方案个性中的一个的默认值,以及适用于 DC 电源状态的三个系统定义的电源方案个性。

默认值必须有效且准确,这一点极其重要。 如果用户未手动设置电源设置,电源管理器将使用 Default 指令指定的默认值。

power-scheme-personality-GUID
以下 GUID 之一,用于标识默认值适用的电源方案。

个性 GUID
“节能程序” {A1841308-3541-4FAB-BC81-F71556F20B4A}
高性能 {8C5E7FDA-E8BF-4A96-9A85-A6E23A8C635C}
已平衡 {381B4222-F694-41F0-9685-FF5BB260DF2E}

这些 GUID 在 Wdm.h 中定义。

AC/DC-index
如果 AC/DC-index 为 0,则设置适用于交流电源状态;如果 AC/DC-index 为 1,则设置适用于 DC 电源状态。 0 或 1 以外的值无效。

default-setting-index
如果使用 Value 指令指定允许的值,则 default-setting-indexValue 指令的 value-index 条目的值。 如果使用 ValueRange 指令指定允许的值,则此项不适用。

default-setting-value
如果使用 ValueRange 指令指定允许的值, 则 default-setting-valueValueRange 指令指定的允许值之一。 如果使用 Value 指令指定允许的值,则此项不适用。

注解

add-power-setting-section 名称在 INF 文件中必须是唯一的,但它可由同一 INF 文件中的多个 AddPowerSetting 指令引用。 每个节名称必须遵循 INF 文件的一般语法规则中所述的一般规则

卸载设备后,电源管理器不会自动删除设备电源策略。 通过 Powrprof.h 中定义的系统提供的电源设置例程,共同安装程序可以安装或删除电源设置、值和默认值。 有关这些电源管理例程的详细信息,请参阅随Microsoft Windows SDK文档提供的电源管理参考。

此外, Powercfg.exe 命令行工具可用于更改电源设置。 有关 Powercfg.exe的信息,请参阅 Microsoft 帮助和支持中心。

有关如何使用系统定义的 .nt.ntx86.ntia64.ntamd64.ntarm.ntarm64 扩展的详细信息,请参阅 为多个平台和操作系统创建 INF 文件

指定 AddPowerSetting 字符串条目值

除了 REG_SZ 类型的值数据条目外,使用 AddPowerSetting 指令提供的所有其他字符串条目值都可以表示为用双引号括起来的字符串 (“quoted-string”) ,作为在 INF 文件的 INF 字符串节中定义的 %strkey% 标记,或作为非特定语言注册表值。

非特定语言的注册表值用于支持 Windows 多语言用户界面 (MUI) ,并按如下方式指定:

"@file-path,-resourceID[;comment]"

指定非特定语言注册表值的条目如下所示:

file-path
包含资源的文件的完全限定路径。

resourceID
相应资源的资源 ID。 对于字符串, resourceID 引用字符串。 对于图标, resourceID 引用图标。

注释
一个可选值,可用于帮助调试或提供有关设置的其他注释。 对于字符串资源,Power Manager 不会将注释字符串与指定的资源字符串合并或显示。

有关如何指定非特定语言的注册表值的详细信息,请参阅 呈现 Shell 和注册表字符串

示例

以下两个示例定义用于控制 LCD 亮度的电源设置。 第一个示例演示如何使用 Value 指令定义最小、中等和最大 LCD 亮度值。

// Within a DDinstall or ClassInstall23 section
AddPowerSetting=LCDDim
...

[LCDDim]
SubGroup = {7516B95F-F776-4464-8C53-06167F40CC99}
Setting = {381B4222-F694-41F0-9685-FF5BB260DF2E}, "LCD Brightness", "Controls the brightness of the LCD display"

Value = 0, "Low", "Minimum Brightness", %FLG_ADDREG_TYPE_DWORD%, 0x50
Value = 1, "Medium", "Medium Brightness", %FLG_ADDREG_TYPE_DWORD%, 0x75
Value = 2, "High", "Maximum Brightness", %FLG_ADDREG_TYPE_DWORD%, 0x100

Default = %GUID_MAX_POWER_SAVINGS%, %AC%, 0
Default = %GUID_MAX_POWER_SAVINGS%, %DC%, 0
Default = %GUID_TYPICAL_POWER_SAVINGS%, %AC%, 2
Default = %GUID_TYPICAL_POWER_SAVINGS%, %DC%, 1
Default = %GUID_MIN_POWER_SAVINGS%, %AC%, 2
Default = %GUID_MIN_POWER_SAVINGS%, %DC%, 2
...

[Strings]
GUID_MAX_POWER_SAVINGS = {a1841308-3541-4fab-bc81-f71556f20b4a}
GUID_TYPICAL_POWER_SAVINGS = {381b4222-f694-41f0-9685-ff5bb260df2e}
GUID_MIN_POWER_SAVINGS = {8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c}
AC = 0
DC = 1
FLG_ADDREG_TYPE_DWORD = 0x00010001

第二个示例演示如何使用 ValueRange 指令定义允许的 LCD 亮度值范围,这些值从 0% 到 100% 不等,允许的值之间增量为 1%。

// Within a DDinstall or a ClassInstall23 section
AddPowerSetting=LCDDimRange
...

[LCDDimRange]
SubGroup = {7516B95F-F776-4464-8C53-06167F40CC99}
Setting = {381B4222-F694-41F0-9685-FF5BB260DF2E}, "LCD Brightness", "Controls the brightness of the LCD display"
ValueRange = 0, 100, 1, "%"
Default = %GUID_MAX_POWER_SAVINGS%, %AC%, 50
Default = %GUID_MAX_POWER_SAVINGS%, %DC%, 50
Default = %GUID_TYPICAL_POWER_SAVINGS%, %AC%, 95
Default = %GUID_TYPICAL_POWER_SAVINGS%, %DC%, 50
Default = %GUID_MIN_POWER_SAVINGS%, %AC%, 100
Default = %GUID_MIN_POWER_SAVINGS%, %DC%, 100

[Strings]
GUID_MAX_POWER_SAVINGS = {a1841308-3541-4fab-bc81-f71556f20b4a}
GUID_TYPICAL_POWER_SAVINGS = {381b4222-f694-41f0-9685-ff5bb260df2e}
GUID_MIN_POWER_SAVINGS = {8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c}
AC = 0
DC = 1

另请参阅

ClassInstall32

DDInstall

DDInstall。CoInstallers

DDInstall。硬件

DDInstall。接口

DDInstall。服务