Что определяет порядок для звуковых устройств в Windows при использовании winmm.dll?

StackOverflow https://stackoverflow.com/questions/1505522

  •  19-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать NAudio для создания приложения с несколькими режимами вывода звука.У нас установлено 8 звуковых карт USB.NAudio позволяет мне использовать все 8, но я не могу найти шаблон для определения, какой индекс устройства соответствует какой карте.

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

Я пытался использовать WMI для опроса информации, но, похоже, я не могу найти никакой информации, которая определяет порядок звуковых устройств.

Обновить: Я забыл включить некоторую информацию об этой проблеме.Все звуковые карты представляют собой звуковые карты USB, подключенные через 12-портовый концентратор.

Это было полезно?

Решение

Порядок устройств не является детерминированным для всех версий Windows.Для Vista и выше устройства обычно упорядочиваются по идентификатору GUID DSound (более или менее), поэтому они фактически случайны.

Другие советы

Я предполагаю, что вы используете WaveOut?Вы можете вызвать WaveOut.Получите Capabilities(DeviceNumber), чтобы узнать название устройства, которое может вам помочь.

Это то, что я придумал до сих пор, и это работает для нас.

Используя WMI, вы можете получить DeviceID из Win32_SoundDevice.Затем, используя это, вы можете получить доступ к реестру по адресу HKLM\SYSTEM\CurrentControlSet\ENUM\'DeviceID' и получить строковое значение с именем "Driver".Это значение содержит ClassGUID плюс число в конце.

Пример: {4d36e96c-e325-11ce-bfc1-08002be10318}\0015

Если вы уберете это последнее число * (15) * для всех ваших звуковых устройств и упорядочите их, то это будет порядок, в котором устройства перечислены в NAudio с использованием winmm.dll.Существует также местоположение для этих звуковых устройств, либо в реестре с тем же ключом, либо в Win32_PnPEntity с использованием DeviceID.

В нашем случае местоположение позволяет нам определить, к какому порту USB-концентратора подключено это звуковое устройство.

Взгляните на эту статью MSDN.Он использует DirectSound для перечисления аудиоустройств:

http://msdn.microsoft.com/en-us/library/bb318674 (ПРОТИВ 85).aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top