CoreAudioApi.dll在某些计算机上抛出COMException

时间:2017-04-06 09:30:36

标签: c# visual-studio windows-7 core-audio

我必须添加一项功能,允许用户从应用程序中修改系统卷。为此,我在本网站的其他问题中使用了CoreAudioApi.dll

e.g。 the manual

我添加了对CoreAudioApi.dll的引用

这在我的开发计算机上工作正常,但是,当应用程序在其他人的计算机上运行时(例如测试它的人),我们会遇到以下例外情况:

A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in CoreAudioApi.dll
A first chance exception of type 'Autofac.Core.DependencyResolutionException' occurred in Autofac.dll
A first chance exception of type 'Autofac.Core.DependencyResolutionException' occurred in Autofac.dll
A first chance exception of type 'Microsoft.Practices.ServiceLocation.ActivationException' occurred in Microsoft.Practices.ServiceLocation.dll

两台PC都运行Windows 7,64位。

关于可能导致此问题的任何想法?它是否引用了另一个dll或者其他可能我碰巧拥有而另一个用户没有的东西?

修改

只是缩小发生异常的地方......

private readonly MMDeviceEnumerator _deviceEnumerator = new MMDeviceEnumerator();
private readonly MMDevice _playbackDevice;

public SettingsViewModel()
{ 
    // The exception occurs in the following line:
    _playbackDevice = _deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);

调试器尝试输入ServiceLocatorImplBase.cs(如果信息是任何帮助)

1 个答案:

答案 0 :(得分:0)

像往常一样,我花了好几个小时看某事,发一个问题,然后它直接打击了我。

另一台计算机的音频硬件似乎依赖于插入的扬声器或耳机,甚至可以自行启用。他们不是。 (由于我们的应用程序还没有添加声音,他依靠视觉检查 Windows 音量混音器进行测试。)当其他用户插入耳机时,一切都很好。

我可以通过禁用音频硬件在我自己的PC上重现该问题。看起来我只需处理此异常并在这种情况下禁用UI控件。