模拟MIDI设备 - Windows

时间:2010-07-01 10:52:09

标签: windows driver device midi

我需要一些关于Windows编程,MIDI和WDM的建议。我正在尝试编写一个小应用程序,它将位于系统托盘中,并作为MIDI输入/输出设备广告到系统,以便MIDI程序可以发送给它,它将把消息转换为不同的格式。我一直在阅读Cant的WDM书籍,并寻找有关编写设备驱动程序的信息,但不知道我是否正走在正确的道路上。   我还没有看到如何: -

a)将我的驱动程序注册为MIDI功能(我是否在注册表中粘贴了一个引用并让操作系统将MIDI调用直接转到dll中的功能?)

b)通过我的驱动程序将MIDI数据直接发送到我的应用程序,这可能会太大而不能成为驱动程序本身。

任何关于从哪里开始的建议将不胜感激。 谢谢, 皮特

3 个答案:

答案 0 :(得分:7)

Windows MIDI驱动程序不需要在内核中实现,它们可以完全在用户空间中作为DLL实现。

MSDN提供了有关您需要实现的功能的一些信息 - Audio Device Messages for MIDI - 不幸的是,它有点缺乏。

以前有这种驱动程序的示例代码,作为NT4 DDK的一部分,但遗憾的是,DDK / WDK的更新版本不再包含它了。

在搜索之后仍然可以找到一些更好的(虽然更旧)文档和示例代码:

答案 1 :(得分:1)

设备由设备驱动程序枚举(或模拟),而不是应用程序。您在sys托盘中看到的是应用程序图标。因此,您需要同时拥有一个驱动程序和一个应用程序 - 您不能让一点编译代码充当两者。

在驾驶员方面,您可能希望看一眼the MSDN docs。这将回答yopur问题的(a)部分。

假设您仍想继续,(b)最好不要让您的应用程序从驱动程序中提取数据。这比其他方式容易得多 - 应用程序可以轻松找到驱动程序,但驱动程序在查找特定应用程序(进程)时遇到很大问题

答案 2 :(得分:0)

如果您正在寻找一种更简单的入门方式,那里有一个MIDI环回驱动程序,并且制作它的人也提供(或曾经提供)它的一个版本,允许您的程序直接通信与司机。这为您提供了所需的行为,程序显示为MIDI设备。环回驱动程序位于http://nerds.de/en/loopbe1.html。我不再看到开发者页面了,但是如果你联系他们,你可以购买一个驱动程序的许可证,你可以直接访问它而不需要环回。