コード例 #1
0
        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)));
        }
コード例 #2
0
        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));
        }