选择退出音量级别持久性

默认情况下,重启计算机时会保留音量级别设置。 此默认系统行为称为音量持久性。 如果不希望计算机重启后系统维护音量级别,可以在安装音频适配器时使用 INF 文件,以选择退出默认系统行为。

如果驱动程序具有自己的注册表缓存并在驱动程序加载时在硬件本身上设置级别,则可能会希望驱动程序选择退出音量持久性。

若要使用 INF 文件选择退出音量持久性,请使用 AddProperty 注册表指令将 PKEY_AudioDevice_DontPersistControls 注册表项的值设置为“1”。 默认值为“0”。

以下 INF 文件片段演示如何选择退出音量持久性:

;; INF file fragment to show how to use AddProperty
;; to opt out of volume persistence
;;
[Version]
...
Class = MEDIA
ClassGUID = {4d36e96c-e325-11ce-bfc1-08002be10318}
...

[Manufacturer]
%MfgName% = CompanyName,NTamd64
...

[CompanyName.NTamd64]
%DeviceDescription% = HdAudModel, hw-id
;; ... other device models listed here

[HdAudModel]
Include=ks.inf, wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration
CopyFiles = HdAudModel.CopyList, HdAudProp.CopyList, HdAudShortCut.CopyList
AddReg = HdAudModel.AddReg, HdAudProp.AddReg, HdAudShortCut.AddReg, HdAudBranding.AddReg
AddProperty = HdAudModel.AddProperty
...
[HdAudModel.AddProperty]
;; {F3E80BEF-1723-4FF2-BCC4-7F83DC5E46D4},2,7,,0
{F3E80BEF-1723-4FF2-BCC4-7F83DC5E46D4},2,7,,1
...
[Strings]
MfgName = "My Company Name Inc"
DeviceDescription = "My WDM device driver"

注意 前面的 INF 文件片段仅显示 Version 部分,以及与 AddProperty 指令相关的部分。

Manufacturer 部分中的 %MfgName% = CompanyName 行条目引用 CompanyName 部分,该部分提供了音频适配器的型号和硬件 ID (hw-id)。 INF 文件中的此部分(其中提供了型号和 hw-id 信息)称为 models 部分。 该部分的实际标题由用户定义,在前面的示例中为 CompanyName。 有关 INF 文件 models 部分的详细信息,请参阅 INF Models 部分

models 部分又引用设备驱动程序安装 (DDInstall) 部分,其中提供了有关安装程序必须复制的其他 INF 文件的信息。 此部分的实际标题由用户定义,在前面的示例中为 HdAudModelNeeds=KS.Registration... 行条目提供有关 INF 文件中特定部分的信息,安装程序必须从中检索要安装的数据

HdAudModel 部分还包含对 AddReg 部分和 AddProperty 部分的引用。 安装程序从 AddReg 和 AddProperty 检索数据,以分别设置注册表项和设备属性。 此处引用的 AddProperty 部分是 HdAudModel.AddProperty,它使用以下格式提供有关设备属性的信息:

{property-category-guid}, property-pid, type, [flags], value

HdAudModel 部分显示两个行条目,其中第一个行条目已注释掉。注释掉的行条目将设备属性的值设置为“1”。未注释掉的行条目是安装程序读取的行条目。 此行条目导致将设备属性的值设置为“0”。当将此设备属性设置为“0”时,音频设备会选择退出音量持久性。

有关 AddProperty 指令的详细信息,请参阅 INF AddProperty 指令

与上述 INF 文件片段中的属性类别 GUID 和属性 ID 对应的属性名称是 PKEY_AudioDevice_DontPersistControls。