SetupPreferredAudioDevices

SetupPreferredAudioDevices ключевое слово обозначает предпочтительное звуковое устройство, которое по умолчанию включает аудиосистема, если система содержит одно или несколько звуковых устройств. Это ключевое слово относится к классу мультимедиа и поддерживается Microsoft Windows Millennium Edition/Windows 98, Microsoft Windows 2000, Windows XP и Windows Vista. SetupPreferredAudioDevicesis не поддерживается в Windows 7.

При создании звукового устройства приложение может использовать устройство по умолчанию (или предпочтительное) вместо явного указания устройства. (Например, см. описание функций waveOutOpen и DirectSoundCreate в документации по Microsoft Windows SDK.)

Аудиосистема отслеживает текущее предпочтительное звуковое устройство в системном реестре. Когда пользователь обновляет систему путем установки нового звукового устройства, собственный INF-файл, который устанавливает устройство, обычно обновляет реестр, чтобы назначить новое устройство в качестве предпочтительного звукового устройства.

Ключевое слово SetupPreferredAudioDevices может отображаться в директиве registry-update в разделе add-registry-section (см. директиву INF AddReg) INF-файла для звукового устройства. Эта директива имеет следующий формат:

reg-rootkey, [reg-subkey]SetupPreferredAudioDevices [flags], [dword-value]

Директива предписывает аудиосистеме использовать звуковые функции устройства в качестве значений по умолчанию для воспроизведения звука, записи звука и воспроизведения музыки MIDI. После установки эти три значения по умолчанию отображаются на панели управления Звуки и мультимедиа на вкладке Звук. Пользователь может использовать панель управления для изменения устройств по умолчанию.

Параметр dword-value директивы задает значение DWORD, которое должно быть ненулевым, чтобы включить директиву. Если это значение равно нулю, директива не действует. Поскольку Windows Me/98 не поддерживает тип данных реестра REG_DWORD, значение dword обычно выражается как тип REG_BINARY 4 байта, а не как DWORD (например, как "01,00,00,00", а не "0x00000001"). Параметр dword-value можно указать в необработанном двоичном формате, задав параметру flags директивы значение "1" (FLG_ADDREG_BINVALUETYPE).

Директива вступает в силу во время установки драйвера для устройства. Если другое устройство занимает роль предпочтительного устройства во время установки нового устройства, директива заставляет новое устройство взять на себя роль предпочтительного устройства, тем самым вытеснив другое устройство из этой роли.

При обновлении или переустановке драйвера для уже установленного устройства можно избежать изменения текущих выбранных пользователем предпочтительных устройств для воспроизведения звука, записи звука и воспроизведения музыки MIDI. Если это так, задайте бит FLG_ADDREG_NOCLOBBER в параметре flags , что приводит к тому, что директива вступит в силу только в том случае, если это начальная установка устройства.

Пример

Следующий пример является частью INF-файла, где показано, как использовать setupPreferredAudioDevices ключевое слово:

  AddReg = XYZ-Audio-Device.AddReg
  ...
  [XYZ-Audio-Device.AddReg]
  HKR,,SetupPreferredAudioDevices,3,01,00,00,00

Директива в конце примера указывает, что устройство с именем XYZ-Audio-Device теперь является предпочтительным звуковым устройством. HKR — это корневой раздел звукового устройства в реестре. Параметр flags имеет значение 3, то есть побитовое ИЛИ FLG_ADDREG_BINVALUETYPE и FLG_ADDREG_NOCLOBBER. Последняя не позволяет перезаписывать существующие записи реестра предпочтительного устройства в случае, если устройство уже установлено, а его драйвер просто обновляется. Четыре байта в конце директивы указывают ненулевое значение, необходимое для включения директивы.

При текущей реализации SetupPreferredAudioDevices ключевое слово в Windows Vista любая конечная точка звука с нечетным числом dword может быть установлена в качестве устройства по умолчанию. Чтобы убедиться, что в качестве устройства по умолчанию задана правильная конечная точка, убедитесь, что фильтр KS, содержащий соответствующую конечную точку, предоставляется последним. Это необходимо сделать из-за алгоритма, используемого службой AudioEndpointBuilder для заполнения хранилищ свойств и настройки устройств по умолчанию.