My client wants to expose a two way non-audio MIDI channel as a MIDI device. The MIDI stream needs to interact with a user mode API, so for purposes of the kernel space, there’s effectively no hardware behind it. After a lot of digging over the last few days it looks like I can create a kernel driver based on dmusuart/mpu401/msvad and come up with a non-hardware kernel driver to provide the virtual MIDI interface.
However, it seems a lot more sensible based on the requirements to create a user mode driver. It looks like I can create a DLL and register it as an “Installable Driver” per the following:
http://msdn.microsoft.com/en-us/library/dd756990(VS.85).aspx
http://www.winvistatips.com/do-create-new-midi-device-t181672.html
My questions about a MIDI “Installable Driver” user mode DLL are:
-
Is there any reason why I really should go the kernel route instead (performance is not an issue, as these are non-audio MIDI note-on / note-off’s)?
-
Will the “Installable Driver” approach work with x64, Windows Vista, and Win7?
-
Will the “Installable Driver” approach result in a MIDI device accessible via the midiIn* / midiOut* device enumeration, opening/closing, and I/O functions?
There seems to be little in the way of documentation, examples or visible internet activity related to this, which makes me wonder if it’s an approach that’s obsolete and on its way out?