The midiOutUnprepareHeader function cleans up the preparation performed by the midiOutPrepareHeader function.
MMRESULT midiOutUnprepareHeader(
  HMIDIOUT hmo,            
  LPMIDIHDR lpMidiOutHdr,  
  UINT cbMidiOutHdr        
);
Parameters
hmo
Handle to the MIDI output device. This parameter can also be the handle of a MIDI stream cast to HMIDIOUT.
lpMidiOutHdr
Pointer to a MIDIHDR structure identifying the buffer to be cleaned up.
cbMidiOutHdr
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. | 
Remarks
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.
Requirements
**  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