The midiOutUnprepareHeader function cleans up the preparation performed by the midiOutPrepareHeader function.

MMRESULT midiOutUnprepareHeader(
  HMIDIOUT hmo,            
  LPMIDIHDR lpMidiOutHdr,  
  UINT cbMidiOutHdr        



Handle to the MIDI output device. This parameter can also be the handle of a MIDI stream cast to HMIDIOUT.


Pointer to a MIDIHDR structure identifying the buffer to be cleaned up.


Size, in bytes, of the MIDIHDR structure.

Return Values

Returns MMSYSERR_NOERROR if successful or an error otherwise. Possible error values include the following.

Value Description
MIDIERR_STILLPLAYING The buffer pointed to by lpMidiOutHdr is still in the queue.
MMSYSERR_INVALHANDLE The specified device handle is invalid.
MMSYSERR_INVALPARAM The specified pointer or structure is invalid.


This function is complementary to the midiOutPrepareHeader function. You must call midiOutUnprepareHeader before freeing the buffer. After passing a buffer to the device driver with the midiOutLongMsg function, you must wait until the device driver is finished with the buffer before calling midiOutUnprepareHeader.

Unpreparing a buffer that has not been prepared has no effect, and the function returns MMSYSERR_NOERROR.


**  Windows NT/2000/XP:** Included in Windows NT 3.1 and later.
**  Windows 95/98/Me:** Included in Windows 95 and later.
**  Header:** Declared in Mmsystem.h; include Windows.h.
**  Library:** Use Winmm.lib.

See Also

Musical Instrument Digital Interface (MIDI), MIDI Functions, midiOutPrepareHeader, MIDIHDR, midiOutLongMsg