private void PrepareSysExBuffer() { var buffer = new byte[SysExBufferLength]; _sysExBufferPointer = Marshal.AllocHGlobal(buffer.Length); Marshal.Copy(buffer, 0, _sysExBufferPointer, buffer.Length); _sysExHeader = new MidiWinApi.MIDIHDR(); _sysExHeader.lpData = _sysExBufferPointer; _sysExHeader.dwBufferLength = _sysExHeader.dwBytesRecorded = (uint)buffer.Length; ProcessMmResult(() => MidiInWinApi.midiInPrepareHeader(_handle, ref _sysExHeader, Marshal.SizeOf(_sysExHeader))); ProcessMmResult(() => MidiInWinApi.midiInAddBuffer(_handle, ref _sysExHeader, Marshal.SizeOf(_sysExHeader))); }
private void PrepareSysExBuffer() { var header = new MidiWinApi.MIDIHDR { lpData = Marshal.AllocHGlobal(SysExBufferLength), dwBufferLength = SysExBufferLength, dwBytesRecorded = SysExBufferLength }; _sysExHeaderPointer = Marshal.AllocHGlobal(MidiWinApi.MidiHeaderSize); Marshal.StructureToPtr(header, _sysExHeaderPointer, false); ProcessMmResult(MidiInWinApi.midiInPrepareHeader(_handle, _sysExHeaderPointer, MidiWinApi.MidiHeaderSize)); ProcessMmResult(MidiInWinApi.midiInAddBuffer(_handle, _sysExHeaderPointer, MidiWinApi.MidiHeaderSize)); }