Поиск USB VID / PID, связанного с устройством CoreAudio в OSX

Мне нужно определить, к какому физическому USB-устройству (через VID / PID / SerialNumber) относится произвольное CoreAduio AudioDevice. CoreAudio позволяет запрашивать различные свойства устройства, такие как тип транспорта (в моем случае USB), UID (уникальный для сеансов и машин) и несколько строк конфигурации.

И аудио-часть IOKit, и CoreAudio имеют представление для аудиоустройств, но мне не ясно, как преодолеть разрыв между ними. (Похоже, я смогу запросить AudioDevice для его IOAudioDevice ...)


person user2134761    schedule 24.07.2014    source источник
comment
Исходный код драйвера AppleUSBAudioDevice раньше был общедоступным и все еще находится где-то в Интернете, вы сможете получить эту информацию там.   -  person pmdj    schedule 25.07.2014


Ответы (1)


Я нашел следующее сообщение от инженера Apple CoreAudio, в котором описывается, как получить IOUSBDeviceInterface от AudioDeviceID:

Между ними нет прямого соответствия. Но лучше всего это сделать:

  1. получить строку UID для устройства из HAL
  2. Создайте соответствующий словарь, который ищет объекты IOAudioEngine
  3. Перебирайте службы сопоставления, пока не найдете службу со свойством UID, которая соответствует тому, что вы получили от HAL.
  4. Пройдите отсюда в IORegistry, чтобы найти USB-объект, который вы ищете.
person Frederik    schedule 23.03.2015