Windows 10上PortMidi的死锁

Windows 10上PortMidi的死锁

问题描述:

我的代码现在使用PortMidi已有好几年了。
我使用它来编写便携式C++代码来控制外部MIDI表面控件类型Mackie
我使用PortMidi最新版本:20101008

最近我们发现,当在Windows 10上使用控制时,我们会遇到死锁。 这只发生在Windows 10上。

当死锁状态下的线程被套牢:
Windows 10上PortMidi的死锁

ntdll!ZwWaitForSingleObject 
KERNELBASE!WaitForSingleObjectEx 
wdmaud!CMIDIOutDevice::WriteEvent 
wdmaud!CMIDIOutDevice::PlaySysEx 
wdmaud!HwModMessage 
wdmaud!dspsL 
WINMMBASE!midiMessage 
WINMMBASE!midiOutLongMsg 
MIDICommunication!winmm_write_flush 
MIDICommunication!Pm_WriteSysEx 

使用调试器,我发现代码正在等待一个事件(未锁)。

有没有人知道Windows 10上的PortMidi问题和/或如何解决它?

非常感谢,拉巴斯

+0

Win10 [已知很麻烦](https://stackoverflow.com/a/32553208/17034)。确保你不会说谎,如果你传递了错误的价值,你会陷入僵局。 –

四个月后...

在调试,我发现,如果你直接使用 Microsoft MIDI API这个问题同样存在。
由于这个原因,我与Microsoft一起打开了Premier Support Call
经过长时间的调查(四个月)后,Microsoft确认这是Microsoft WinMM API实施中的缺陷,其中“...未正确处理PNP清除...”

我被告知,此问题的修复将在RS5时间范围内发布。