public int InOpen(string deviceName) { int result = -1; int deviceID = GetInIdByName(deviceName); IntPtr pointer = Marshal.GetIUnknownForObject(this); midiProc = new MidiProc(CallBack); result = WinMM.midiInOpen(ref inHandle, deviceID, midiProc, pointer, CALLBACK_FUNCTION); if (result != 0) { throw new Exception("MidiInOpen failed with code: " + result + ". Cannot open IN device " + deviceName); } AddSysexBuffer(); result = WinMM.midiInStart(inHandle); if (result != 0) { throw new Exception("Cannot start IN device " + deviceName); } return(result); }
internal static extern int midiInOpen(ref int handle, int deviceId, MidiProc proc, int instance, int flags);
public static extern int midiInOpen(out MidiInSafeHandle handle, uint deviceId, MidiProc proc, IntPtr instance, uint flags);
public static extern int midiStreamOpen(out MidiOutStreamSafeHandle handle, ref uint deviceId, uint cMidi, MidiProc proc, IntPtr instance, uint flags);
public static extern int midiStreamOpen(out IntPtr handle, ref uint deviceID, uint cMidi, MidiProc proc, IntPtr instance, uint flags);
public static extern int midiOutOpen(out IntPtr handle, uint deviceID, MidiProc proc, IntPtr instance, uint flags);