C# Windows 8.1 WPF应用程序mixerSetControlDetails返回MMSYSERR\u错误

C# Windows 8.1 WPF应用程序mixerSetControlDetails返回MMSYSERR\u错误,c#,wpf,windows-8.1,naudio,winmm,C#,Wpf,Windows 8.1,Naudio,Winmm,编辑 修改NAudio源代码并进行一些调试后,我发现设置值属性时调用的mixerSetControlDetails函数返回MMSYSERR\u ERROR 有没有办法获得有关为什么mixerSetControlDetails失败的更多信息 我也愿意用其他方法在C#上完成同样的事情 原创 我有一些代码,可以计算声音中的能量,并使用NAudio根据这个计算值设置麦克风的音量。我读取音频样本没有问题,但当我尝试设置麦克风升压时,程序卡住了 我已在Windows 7、8和8.1上检查了该问题。此问题仅在

编辑

修改NAudio源代码并进行一些调试后,我发现设置
属性时调用的
mixerSetControlDetails
函数返回
MMSYSERR\u ERROR

有没有办法获得有关为什么
mixerSetControlDetails
失败的更多信息

我也愿意用其他方法在C#上完成同样的事情

原创

我有一些代码,可以计算声音中的能量,并使用NAudio根据这个计算值设置麦克风的音量。我读取音频样本没有问题,但当我尝试设置麦克风升压时,程序卡住了

我已在Windows 7、8和8.1上检查了该问题。此问题仅在Windows 8.1上出现。有趣的是,当我在Windows8.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);

似乎
mixerSetControlDetails
函数随机返回
MMSYSERR\u ERROR
(至少我找不到模式)。实际上它确实设置了新值,只需忽略异常,或者如果没有设置,请尝试再次设置该值。卡住的行为与我的程序有关,与此错误无关