Guidelines for Handling MCI Commands

A developer’s most important guideline is to make sure the driver design adheres to the command descriptions and flag descriptions provided by the Win32 SDK. For example, the description of MCI_PLAY says that the starting position is the current position and the ending position is the end of the medium, unless the application includes MCI_FROM and MCI_TO flags.

If you need to provide extensions to the basic commands, do so in a manner that is consistent with extended command sets that already exist.

If an application sends an MCI_PLAY command with MCI_NOTIFY set, subsequent MCI_PAUSE and MCI_RESUME commands should not cancel the notification request. The application should still be notified when the original play operation has completed. The MCI_PAUSE and MCI_RESUME commands just delay the completion of the MCI_PLAY operation; they do not cancel or modify it.

Drivers for compound devices can allow MCI_RECORD commands to be sent with the the MCI_OPEN_ELEMENT flag set, but with the element file name specified as a null-terminated, zero-length string. In this case the recorded data should be saved in temporary storage. On receipt of a subsequent MCI_SAVE command, the driver should move the temporary data into a permanent file. Alternatively, drivers can disallow MCI_RECORD commands without a valid filename, and return MCIERR_FILENAME_REQUIRED if the filename is not included.