2017-10-09 2 views
0

코드에 PortMidi이 몇 년 동안 사용되었습니다.
외부 MIDI 표면 컨트롤Mackie의 컨트롤을위한 휴대용 C++ 코드 작성에이 코드를 사용합니다.
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). 거짓말을하지 않았는지 확인하십시오. 잘못된 값을 전달하면 교착 상태가됩니다. –

답변

0

4 개월 후 ...

내가 직접 Microsoft MIDI API를 사용하는 경우에도이 문제가 존재한다는 것을 발견 디버깅하는 동안.
이로 인해 프리미어 지원 호출을 Microsoft에 오픈했습니다.
오랜 시간의 조사 (4 개월) 후 Microsoft는 Microsoft WinMM API 구현에서 결함이 있음을 확인했으며 "... PNP 제거를 제대로 처리하지 못했습니다 ...".

이 문제에 대한 해결책은 RS5 기간 내에 발표 될 것입니다.