Windows 10上的PortMidi死锁

时间:2017-10-09 13:05:41

标签: c++ windows-10 midi

我的代码现在使用PortMidi已有好几年了 我用它来编写可移植的C ++代码来控制Mackie类型的外部 MIDI Surface Control
我使用PortMidi最新版本:20101008

最近我们发现当在Windows 10上使用控件进行攻击时,我们会遇到死锁。 仅在Windows 10上发生

当处于死锁状态时,以下线程被卡住:

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问题和/或如何绕过它?

非常感谢,Paz

1 个答案:

答案 0 :(得分:3)

4个月后......
调试时我发现如果你使用这个问题也存在 直接Microsoft MIDI API。由于这个原因,我与微软开了 Premier Support Call 经过长时间的调查(四个月),Microsoft确认这是Microsoft WinMM API实现中的一个缺陷," ...无法正确处理PNP删除.​​.."

据我所知,将在RS5时间范围内发布修复方案。


11个月后......
作为处理 Premier Support Call 的一部分,Microsoft发布了public KB article来描述此问题。