【问题标题】:Access Violation error crashing program (0xc0000005)访问冲突错误导致程序崩溃 (0xc0000005)
【发布时间】:2016-07-12 12:53:07
【问题描述】:

我正在尝试使用 coreaudio.dll 将音量混合器中的 Spotify 音量静音。 这是我的代码:

private float volume = 0.9f;

MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();
            MMDevice device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
            AudioSessionManager2 asm = device.AudioSessionManager2;
            SessionCollection sessions = asm.Sessions;
            try
            {
                for (int sid = 0; sid < sessions.Count; sid++)
                {
                    string id = sessions[sid].GetSessionIdentifier;
                    Console.WriteLine(id);
                    if (id.ToLower().IndexOf("spotify.exe") > -1)
                    {
                        if (muted)
                        {
                            volume = sessions[sid].SimpleAudioVolume.MasterVolume;
                            sessions[sid].SimpleAudioVolume.MasterVolume = 0;
                        }
                        else
                        {
                            sessions[sid].SimpleAudioVolume.MasterVolume = volume;
                        }
                        //sessions[sid].SimpleAudioVolume.Mute = muted;


                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

这是输出:

    'VMTit.vshost.exe' (CLR v4.0.30319: VMTit.vshost.exe): Loaded 'C:\Users\Maria\Desktop\Spotify-Ad-Blocker-1.6.3.0\VMTit\VMTit2\bin\Debug\VMTit.exe'. Symbols loaded.
'VMTit.vshost.exe' (CLR v4.0.30319: VMTit.vshost.exe): Loaded 'C:\Users\Maria\Desktop\Spotify-Ad-Blocker-1.6.3.0\VMTit\VMTit2\bin\Debug\CoreAudio.dll'. Cannot find or open the PDB file.
{0.0.0.00000000}.{612a18a0-426d-44a5-bfe5-655ee61c2700}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}
{0.0.0.00000000}.{612a18a0-426d-44a5-bfe5-655ee61c2700}|\Device\HarddiskVolume2\Program Files\Steam\Steam.exe%b{00000000-0000-0000-0000-000000000000}
{0.0.0.00000000}.{612a18a0-426d-44a5-bfe5-655ee61c2700}|\Device\HarddiskVolume2\Users\Maria\AppData\Roaming\Spotify\Spotify.exe%b{00000000-0000-0000-0000-000000000000}
The program '[7908] VMTit.vshost.exe' has exited with code -1073741819 (0xc0000005) 'Access violation.

几周前,当我使用这段代码时,它可以完美运行。最近我从 W8.1 64bit 转移到 W8.1 32bits。就是从那时起,这个问题就出现了。

有什么想法吗?

【问题讨论】:

  • 你从哪里得到异常?另外,为什么不使用 Spotify API 而不是操纵混音器?
  • @Luaan 因为我不想使用任何外部 API,但我只是尝试了一下,它看起来很棒。谢谢。
  • 当崩溃发生时,您在事件查看器中获得的事件 ID 是什么?由于您的异常没有被 try catch 块捕获,因此这是一些严重的内存堆损坏问题或一些严重的问题。因此,首先您在接受的答案中尝试此link 的第 2 步选项。所以首先要弄清楚错误的严重性。如果它是像内存堆损坏这样严重的事情,那么即使这个设置也无济于事。我假设您使用的是 .Net 4 或更高版本。

标签: c# winforms visual-studio error-handling access-violation


【解决方案1】:

这有点偏题,但最好的办法可能是避免操纵混音器,而改用 Spotify API。它为您提供所需的所有控制,并且不会让用户感到困惑——我认识的大多数非专家还没有发现有音量混音器,而且 Spotify 也不会检查混音器,所以你最终会得到一个静音的 Spotify,看起来 没有静音,也没有办法修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2012-05-22
    • 1970-01-01
    • 2020-05-24
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多