我的代码现在使用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
答案 0 :(得分:3)
4个月后......
调试时我发现如果你使用这个问题也存在
直接Microsoft MIDI API。由于这个原因,我与微软开了 Premier Support Call
经过长时间的调查(四个月),Microsoft确认这是Microsoft WinMM API实现中的一个缺陷," ...无法正确处理PNP删除..." 。
据我所知,将在RS5时间范围内发布修复方案。
11个月后......
作为处理 Premier Support Call 的一部分,Microsoft发布了public KB article来描述此问题。