Почему midiOutOpen возвращает 1 (=Неопределенная ошибка) в приложении UWP?

#uwp #midi #desktop-bridge #appx #winmm

Вопрос:

Как только я конвертирую приложение, функция midiOutOpen начинает возвращать 1 при вызове.

Я заявляю об этом как:

 VB
Shared Function midiOutOpen(ByRef lphMidiOut As IntPtr, uDevID As IntPtr, cBack As IntPtr, dwinst As IntPtr, dwFlags As UInt32) As UInt32
 

Есть ли способ использовать winmm.dll/midiOutOpen из упакованного приложения(.appx), которое все еще можно опубликовать в MS store? Или каким-то другим способом получить дескриптор midi-устройства (идентификатор 0)?

Комментарии:

1. Итак, у вас есть настольное приложение, которое успешно использовало этот метод, верно? Затем вы преобразовали это приложение в appx. Не могли бы вы, пожалуйста, рассказать мне, как вы упаковываете свое настольное приложение?

2. Может быть, в этом причина — я пакую вещи на автономном компьютере, который не обновлялся около 5 лет. В настоящее время я пытаюсь получить в свои руки расширенное базовое изображение wim, но я нахожу Docker ужасным приложением (не работает). Я подумываю поместить изображение wim на автономный компьютер, а затем обратиться к нему из Desktop Converter. Я уже установил Project Centennial на автономную машину. Иду ли я по правильному пути?

3. Только что проверили… То же самое поведение при упаковке с использованием VS2019 на другой машине. MidiOutOpen возвращает 1.

4. @RoyLi-MSFT Да, перед преобразованием он возвращает 0, и вызов midiOutShortMsg производит звук. Дополнение к моему предыдущему комментарию: я сделал упаковку из исходного кода с боковой загрузкой.

Ответ №1:

Похоже, что функция midiOutOpen и другие API, такие как функция midiOutShortMsg, не работают в приложениях настольных мостов.

В настоящее время мы бы предложили вам использовать современный MIDI из Windows.Устройства.Пространство имен Midi. Вы можете обратиться к образцу здесь:MIDI-образец.