SetupPreferredAudioDevices
SetupPreferredAudioDevices 关键字 (keyword)表示首选音频设备,这是默认情况下音频系统在系统包含一个或多个音频设备时启用的设备。 此关键字 (keyword)特定于媒体类,受 Microsoft Windows Millennium Edition/Windows 98、Microsoft Windows 2000、Windows XP 和 Windows Vista 支持。 Windows 7 不支持 SetupPreferredAudioDevicesis。
创建音频设备时,应用程序程序可以选择使用默认设备(或首选设备),而不是显式指定设备。 (例如,请参阅 Microsoft Windows SDK 文档中的 waveOutOpen 和 DirectSoundCreate 函数。
音频系统跟踪系统注册表中的当前首选音频设备。 当用户通过安装新的音频设备来升级系统时,安装设备的专有 INF 文件通常会更新注册表,以将新设备指定为首选音频设备。
SetupPreferredAudioDevices 关键字 (keyword)可以出现在外接程序注册表更新指令部分(请参阅音频设备的 INF AddReg 指令)中的注册表更新指令中。 此指令具有以下格式:
reg-rootkey, [reg-subkey]SetupPreferredAudioDevices [flags], [dword-value]
该指令指示音频系统使用设备的音频功能作为声音播放、录音和 MIDI 音乐播放的默认值。 安装后,这三个默认值将显示在“音频”选项卡下的“声音和多媒体”控制面板中。用户可以使用控制面板更改默认设备。
指令的 dword-value 参数指定一个 DWORD 值,该值应为非零,以便启用该指令。 如果此值为零,则指令无效。 由于 Windows Me/98 不支持REG_DWORD注册表数据类型,因此 dword-value 通常表示为 4 字节REG_BINARY类型而不是 DWORD(例如,如“01,00,00,00,00”而不是“0x00000001”)。 通过将指令的标志参数设置为“1”(FLG_ADDREG_BINVALUETYPE),可以采用原始二进制格式指定 dword-value 参数。
该指令在安装设备的驱动程序时生效。 如果另一台设备在安装新设备时占据首选设备的角色,该指令会导致新设备承担首选设备的角色,从而将另一台设备从此角色中取代。
升级或重新安装已安装设备的驱动程序时,可能需要避免更改用户的当前首选设备选择,以便播放声音、录音和 MIDI 音乐播放。 如果是,请在 flags 参数中设置FLG_ADDREG_NOCLOBBER位,仅当这是设备的初始安装时,指令才会生效。
示例
以下示例是 INF 文件的一部分,演示如何使用 SetupPreferredAudioDevices 关键字 (keyword):
AddReg = XYZ-Audio-Device.AddReg
...
[XYZ-Audio-Device.AddReg]
HKR,,SetupPreferredAudioDevices,3,01,00,00,00
示例末尾的指令指定名为“XYZ-Audio-Device”的设备现在是首选音频设备。 HKR 是注册表中的音频设备的根密钥。 标志参数设置为 3,这是FLG_ADDREG_BINVALUETYPE和FLG_ADDREG_NOCLOBBER的按位 OR。 后者可防止设备的现有首选设备注册表项在设备已安装且其驱动程序只是升级时被覆盖。 指令末尾的四个字节指定一个非零值,这是启用该指令所必需的。
随着 Windows Vista 中 SetupPreferredAudioDevices 关键字 (keyword)的当前实现,其 dword-value 设置为奇数的任何音频终结点都可以设置为默认设备。 若要确保将正确的终结点设置为默认设备,请确保最后公开包含相关终结点的 KS 筛选器。 由于 AudioEndpointBuilder 服务用来填充属性存储和设置默认设备的算法,因此必须执行此操作。