MixerSetControlDetails приложения Windows 8.1 WPF возвращает MMSYSERR_ERROR

Изменить

После модификации исходного кода NAudio и небольшой отладки я обнаружил, что функция mixerSetControlDetails, которая вызывается при установке свойства Value, возвращает MMSYSERR_ERROR.

Есть ли способ получить дополнительную информацию о том, почему mixerSetControlDetails не удалось?

Я также открыт для других способов сделать то же самое на C#.

Исходный

У меня есть код, который вычисляет энергию голоса и устанавливает уровень усиления микрофона в соответствии с этим вычисленным значением с помощью NAudio. У меня нет проблем с чтением аудиосэмплов, но когда я пытаюсь установить усиление микрофона, программа зависает.

Я проверил проблему на Windows 7, 8 и 8.1. Проблема возникает только на Windows 8.1. Интересно, что когда я запускаю программу на виртуальной машине с Windows 8.1, она работает как положено. Может ли это быть проблемой разрешения?

Вот код для установки значения повышения

foreach (MixerControl mixerControl in MixerLine.Controls)
{
    if (mixerControl.ControlType == MixerControlType.Volume)
    {
        UnsignedMixerControl volumeControl = (UnsignedMixerControl)mixerControl;

        volumeControl.Value = (uint) value;
    }
}

Где MixerLine создается заранее с помощью этого кода.

MixerLine = new MixerLine((IntPtr) deviceID, 0, MixerFlags.WaveIn);

person Yusuf Tarık Günaydın    schedule 14.04.2015    source источник


Ответы (1)


Кажется, что функция mixerSetControlDetails возвращает MMSYSERR_ERROR случайным образом (по крайней мере, я не смог найти шаблон). На самом деле он устанавливает новое значение, просто игнорируйте исключение или, если оно не установлено, попробуйте снова установить значение. Застрявшее поведение было связано с моей программой, не имеющей отношения к этой ошибке.

person Yusuf Tarık Günaydın    schedule 21.10.2015