The MIM_MOREDATA message is sent to a MIDI input callback function when a MIDI message is received by a MIDI input device but the application is not processing MIM_DATA messages fast enough to keep up with the input device driver. The callback function receives this message only when the application specifies MIDI_IO_STATUS in the call to the midiInOpen function.

dwParam1 = dwMidiMessage 
dwParam2 = dwTimestamp 



Specifies the MIDI message that was received. The message is packed into aDWORDvalue as follows:

High word High-order byte Not used.
Low-order byte Contains a second byte of MIDI data (when needed).
Low word High-order byte Contains the first byte of MIDI data (when needed).
Low-order byte Contains the MIDI status.

The two MIDI data bytes are optional, depending on the MIDI status byte.


Specifies the time that the message was received by the input device driver. The time stamp is specified in milliseconds, beginning at 0 when the midiInStart function was called.

Return Value

This message does not return a value.


An application should do only a minimal amount of processing of MIM_MOREDATA messages. (In particular, applications should not call the PostMessage function while processing MIM_MOREDATA.) Instead, the application should place the event data into a buffer and then return.

When an application receives an MIM_DATA message after a series of MIM_MOREDATA messages, it has caught up with incoming MIDI events and can safely call time-intensive functions.

MIDI messages received from a MIDI input port have running status disabled; each message is expanded to include the MIDI status byte.

This message is not sent when a MIDI system-exclusive message is received.


Minimum supported client
Windows 2000 Professional [desktop apps only]
Minimum supported server
Windows 2000 Server [desktop apps only]
Mmsystem.h (include Windows.h)

See also

Musical Instrument Digital Interface (MIDI)

MIDI Messages