为啥 midiOutOpen 在 UWP 应用程序中返回 1(=未指定错误)?

Posted

技术标签:

【中文标题】为啥 midiOutOpen 在 UWP 应用程序中返回 1(=未指定错误)?【英文标题】:Why midiOutOpen returns 1 (=Unspecified error) in a UWP app?为什么 midiOutOpen 在 UWP 应用程序中返回 1(=未指定错误)? 【发布时间】:2021-11-29 23:18:44 【问题描述】:

当我转换应用程序时,midiOutOpen 函数开始在被调用时返回 1。

我声明为:

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

有没有办法从仍然可以发布到 MS 商店的打包应用程序 (.appx) 中使用 winmm.dll/midiOutOpen?或者其他获取midi设备句柄(ID 0)的方法?

【问题讨论】:

所以你有一个桌面应用程序成功调用了这个方法,对吧?然后,您将此应用程序转换为 appx。你能告诉我你是如何打包你的桌面应用程序的吗? 也许这就是原因 - 我正在使用大约 5 年没有更新的离线电脑。目前,我正在尝试使用 wim 扩展的基本映像,但我发现 Docker 是一个糟糕的应用程序(无法正常工作)。我正在考虑将 wim 图像放在离线计算机上,然后从 Desktop Converter 中引用它。我已经在离线机器上安装了Project Centennial。我走对路了吗? 刚刚测试...在不同机器上使用 VS2019 打包时的行为相同。 MidiOutOpen 返回 1。 @RoyLi-MSFT 是的,在转换之前它返回 0 并且对 midiOutShortMsg 的调用会产生声音。对我之前的评论的补充:我使用侧加载从源代码打包。 【参考方案1】:

看起来 midiOutOpen 函数和其他 API(如 midiOutShortMsg 函数)在桌面桥应用程序中不起作用。

目前,我们建议您使用来自Windows.Devices.Midi Namespace 的现代 MIDI。您可以参考这里的示例:MIDI sample。

【讨论】:

以上是关于为啥 midiOutOpen 在 UWP 应用程序中返回 1(=未指定错误)?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的发行版 .exe 在启动 UWP 应用程序时失败?

为啥我在 Windows 10 UWP 上收到“无法注册包”部署错误?

UWP:为啥我的后台任务(使用 TimeTrigger)会超出 CPU 配额?

我的vs2015为啥没有uwp应用的模板,sdk都下载了

为啥我的 .UWP 模拟器无法在 Visual Studio 中启动?

为啥我的受 AAD 保护的 Azure 函数在使用来自 UWP 应用的访问令牌调用时返回 401?