Я вижу. Прослеживая код машины, я вижу, что функция modMessage() не работает и возвращает MMSYSERR_ERROR. Именно поэтому мне непонятно, это похоже на недостающую проблему инициализации.
Что странно в этой неудаче, так это то, что об этом не так много, вы ожидаете, что многие другие программы тоже упадут. Или, если на то пошло, они будут протестированы перед отправкой Win10. Следующее, что я пробовал, - это добавление одной вещи, которая происходит в любом нетривиальном аудио приложении, которое я пропустил в своей тестовой программе. Частично вдохновлялось, увидев «ATL» еще в символах modMessage, хотя и не было нигде близко. Я добавил это как первую строку в main():
CoInitializeEx(NULL, COINIT_MULTITHREADED);
Badaboom, не более ошибок. Используйте COINIT_APARTMENTTHREADED, если вы вызываете это в основном потоке потока пользовательского интерфейса. CoUninitialize() в конце для очистки.
Объяснение этого трудно, инициализация COM не требуется при использовании MIDI. С его помощью вызов midiOutOpen получает еще одну DLL-загрузку, clbcatq.dll. Это модуль поддержки COM +. Так что, похоже, что Win10 требует инициализации COM.
Спасибо, что посмотрели на это - ваше обходное решение сработало для меня! – Cam
Множество программ _do_ падают. Но у многих малобюджетных программистов не было дополнительной машины для тестирования Win10 до ее выхода ... и они ожидали, что M $ останется совместимой ............. VanBasco Караоке-плеер это тот, который падает ... если вы не нажмете? (help), который, по-видимому, использует/инициализирует COM. – Victoria