MCI Functions Macros and Messages
[The feature associated with this page, MCI, is a legacy feature. It has been superseded by MediaPlayer. MediaPlayer has been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer instead of MCI, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]
Most MCI applications use the mciSendString and mciSendCommand functions dozens of times. MCI provides some other useful functions that your application will use less frequently.
The device identifier required by most MCI commands is typically retrieved in a call to the open (MCI_OPEN) command. If you need a device identifier but do not want to open the device — for example, if you want to query the capabilities of the device before taking any other action — you can call the mciGetDeviceID function.
The mciGetCreatorTask function allows your application to use a device identifier to retrieve a handle to the task that created that identifier.
You can use the mciGetYieldProc and mciSetYieldProc functions to assign and retrieve the address of the callback function associated with the "wait" (MCI_WAIT) flag.
The mciGetErrorString function retrieves a string that describes an MCI error value. Each string that MCI returns, whether data or an error description, is a maximum of 128 characters. Dialog box fields that are smaller than 128 characters will truncate the longer strings returned by MCI. For more information about these strings, see MCIERR Return Values.
The MCI macros are tools you can use to create and disassemble values that specify time formats. These time formats are used in many MCI commands. The formats acted on by the macros are hours/minutes/seconds (HMS), minutes/seconds/frames (MSF), and tracks/minutes/seconds/frames (TMSF). The following table lists the macros and their descriptions.
Macro | Description |
---|---|
MCI_HMS_HOUR | Retrieves the hours component from an HMS value. |
MCI_HMS_MINUTE | Retrieves the minutes component from an HMS value. |
MCI_HMS_SECOND | Retrieves the seconds component from an HMS value. |
MCI_MAKE_HMS | Creates an HMS value. |
MCI_MAKE_MSF | Creates an MSF value. |
MCI_MAKE_TMSF | Creates a TMSF value. |
MCI_MSF_FRAME | Retrieves the frames component from an MSF value. |
MCI_MSF_MINUTE | Retrieves the minutes component from an MSF value. |
MCI_MSF_SECOND | Retrieves the seconds component from an MSF value. |
MCI_TMSF_FRAME | Retrieves the frames component from a TMSF value. |
MCI_TMSF_MINUTE | Retrieves the minutes component from a TMSF value. |
MCI_TMSF_SECOND | Retrieves the seconds component from a TMSF value. |
MCI_TMSF_TRACK | Retrieves the tracks component from a TMSF value. |
MCI also provides two messages: MM_MCINOTIFY and MM_MCISIGNAL. The MM_MCINOTIFY message notifies an application of the outcome of an MCI command whenever that command specifies the "notify" (MCI_NOTIFY) flag. The MM_MCISIGNAL message is specific to digital-video devices; it notifies the application when a specified position is reached.