The midiOutPrepareHeader function prepares a MIDI system-exclusive or stream buffer for output.

MMRESULT midiOutPrepareHeader(
  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 that identifies the buffer to be prepared.


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
MMSYSERR_INVALHANDLE The specified device handle is invalid.
MMSYSERR_INVALPARAM The specified address is invalid or the given stream buffer is greater than 64K.
MMSYSERR_NOMEM The system is unable to allocate or lock memory.


A stream buffer cannot be larger than 64K.

Preparing a header that has already been prepared has no effect, and the function returns MMSYSERR_NOERROR.

After the header has been prepared, do not modify the buffer. To free the buffer, use the midiOutUnprepareHeader function.

Before using this function, you must set the lpData, dwBufferLength, and dwFlags members of the MIDIHDR structure. The dwFlags member must be set to zero.


**  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, MIDIHDR, midiOutUnprepareHeader