Я использую winmm api для работы со звуком. Я использую waveInGetDeviceCaps
и waveInMessage
, чтобы однозначно идентифицировать «звуковую линию». Все работает нормально, за исключением того, что в Vista имя устройства ограничено 32 символами структурой WaveInCaps
.
Чтобы обойти это, я предполагаю использовать основные API, когда версия ОС> = Vista. Я использую IMMDeviceEnumerator.GetDevice
и IMMDeviceEnumerator.EnumAudioEndpoints
для сбора информации о звуковых линиях, но я не уверен, как сказать, что одно устройство под API ядра относится к одной записи под API WaveXX.
Полагаю, я мог бы сравнить путь к обоим устройствам, но это противоречило бы рекомендации MS рассматривать строку пути к устройствам как "непрозрачную".
Что бы вы сказали?