public void PlayFromMemory(IntPtr ptr, int count) { WinMM.WAVEHDR waveHeader = new WinMM.WAVEHDR() { Data = ptr, BufferLength = (uint)count, BytesRecorded = 0, User = IntPtr.Zero, Flags = (WinMM.WaveHdrFlags)0, Loops = 0, Next = IntPtr.Zero, Reserved = IntPtr.Zero }; IntPtr ptrWaveHeader = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WinMM.WAVEHDR))); Marshal.StructureToPtr(waveHeader, ptrWaveHeader, true); WinMM.waveOutPrepareHeader(ptrWaveOut, ptrWaveHeader, Marshal.SizeOf(typeof(WinMM.WAVEHDR))); WinMM.waveOutWrite(ptrWaveOut, ptrWaveHeader, Marshal.SizeOf(typeof(WinMM.WAVEHDR))); Marshal.DestroyStructure(ptrWaveHeader, typeof(WinMM.WAVEHDR)); }
public void PlayFromMemory(IntPtr ptr, int count) { WinMM.WAVEHDR waveHeader = new WinMM.WAVEHDR() { Data = ptr, BufferLength = (uint)count, BytesRecorded = 0, User = IntPtr.Zero, Flags = (WinMM.WaveHdrFlags) 0, Loops = 0, Next = IntPtr.Zero, Reserved = IntPtr.Zero }; IntPtr ptrWaveHeader = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WinMM.WAVEHDR))); Marshal.StructureToPtr(waveHeader, ptrWaveHeader, true); WinMM.waveOutPrepareHeader(ptrWaveOut, ptrWaveHeader, Marshal.SizeOf(typeof(WinMM.WAVEHDR))); WinMM.waveOutWrite(ptrWaveOut, ptrWaveHeader, Marshal.SizeOf(typeof(WinMM.WAVEHDR))); Marshal.DestroyStructure(ptrWaveHeader, typeof(WinMM.WAVEHDR)); }