The MMIO messages are sent to an I/O procedure as a result of an MMIO function call. For example, when an application calls mmioOpen, the MMIOM_OPEN message is sent to an I/O procedure. An application can also send the MMIO messages to an I/O procedure by issuing mmioSendMessage or by directly calling the I/O procedure.
The mmioSendMessage function should be used only to pass user-defined messages, or messages not automatically generated by an MMIO function, to the I/O procedure of the user's application.
When an application issues mmioSendMessage, it passes an hmmio parameter, which MMIO converts to an MMIOINFO block before sending the parameter to the I/O procedure. When an application calls an I/O procedure directly, a pmmioinfo parameter is passed to the I/O procedure instead of an hmmio. The following is a function prototype for a direct I/O procedure call:
LONG APIENTRY MMIOPROC (PVOID pmmioinfo, USHORT usMsg, LONG lParam1, LONG lParam2);
┌──────────────────────────┬──────────────────────────────────┐ │Message │Description │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_BEGININSERT │Requests that all subsequent │ │ │Writes insert data at the current │ │ │seek position. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_BEGINRECORD │Requests all subsequent Writes be │ │ │considered one logical unit by an │ │ │UNDO or REDO. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_BEGINSTREAM │Sent before the first mmioRead or │ │ │mmioWrite to start the stream at │ │ │the optimum rate for the file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_CLEAR │Requests that a specified range be│ │ │deleted from a file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_CLOSE │Requests that the file be closed. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_COPY │Requests that a specified range be│ │ │copied to the clipboard. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_CUT │Requests that a specified range be│ │ │copied to the clipboard and then │ │ │deleted. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_ENDSTREAM │Sent after the last mmioRead or │ │ │mmioWrite to end the stream. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_DELETE │Requests that information be │ │ │removed from a file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_ENDINSERT │Requests that all subsequent │ │ │Writes overwrite data at the │ │ │current seek position. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_ENDRECORD │Indicates that the logical record │ │ │operation has ended and data │ │ │structures should be updated, if │ │ │necessary. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_GETCF │Obtains the handle (hmmcf) of the │ │ │RIFF compound file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_GETCFENTRY │Requests a CTOC entry for an │ │ │element of a RIFF compound file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_GETFORMATINFO │Requests that the IOProc return an│ │ │MMFORMATINFO structure. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_GETFORMATNAME │Requests the format name for the │ │ │IOProc. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_GETHEADER │Requests that the IOProc return │ │ │media-specific information. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_IDENTIFYFILE │Attempts to determine if any │ │ │IOProc can process a file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_MULTITRACKREAD │Requests that data be read from a │ │ │movie file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_MULTITRACKWRITE │Requests that data be written to a│ │ │movie file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_OPEN │Requests that a file be opened or │ │ │deleted. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_PASTE │Requests that data from the │ │ │clipboard be inserted into a file.│ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_QUERYHEADERLENGTH │Requests that the IOProc return │ │ │the size the header. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_QUERYIMAGE │Requests that the IOProc return │ │ │the currently selected image index│ │ │in the image file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_QUERYIMAGECOUNT │Requests that the IOProc return │ │ │the number of images stored in the│ │ │image file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_READ │Requests that bytes be read from │ │ │an open file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_REDO │Requests that the last logical │ │ │action which was undone be redone.│ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_SAVE │Requests temporary changes in a │ │ │file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_SEEK │Requests that the current file │ │ │position be moved. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_SEEKBYTIME │Requests that the file position be│ │ │moved relative to some unit of │ │ │time. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_SET │Requests that extended file │ │ │information be set or queried. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_SETHEADER │Requests that the IOProc use │ │ │media-specific information when │ │ │writing or accepting data. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_SETIMAGE │Selects a new image index in the │ │ │image file. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_STATUS │Used to pass appropriate │ │ │MCI_STATUS requests to an IOProc. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_TEMPCHANGE │Requests that all subsequent │ │ │Writes to the media be treated as │ │ │temporary changes. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_UNDO │Requests that the last logical │ │ │action, either a delete, insert, │ │ │undo, or redo, be undone. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_WINMSG │Allows an application or an MCD to│ │ │pass PM messages from a window │ │ │procedure to an IOProc. │ ├──────────────────────────┼──────────────────────────────────┤ │MMIOM_WRITE │Requests that the bytes be written│ │ │to an open file. │ └──────────────────────────┴──────────────────────────────────┘
The MMIO messages indicate, to the I/O procedure, the type of MMIO operation to be performed. I/O procedures can be called to process files that might or might not use the RIFF format standard.
Note: The compound-file messages must not be used while creating or appending to the compound file itself.