Sent to a MIDI input driver to allocate a specified device for use by a client application.
MMSYSERR_NOTENABLED | The driver failed to load or initialize. |
MMSYSERR_ALLOCATED | The device is already allocated by the maximum number of clients the driver supports or the device cannot be opened because of system resource limitations other than memory. |
MMSYSERR_NOMEM | The device cannot be opened because of a failure allocating or locking memory. |
CALLBACK_EVENT | If this flag is specified, dwCallback in the MIDIOPENDESC structure is assumed to be an event handle. |
CALLBACK_FUNCTION | If this flag is specified, dwCallback in the MIDIOPENDESC structure is assumed to be the address of a callback function. |
CALLBACK_THREAD | If this flag is specified, dwCallback in the MIDIOPENDESC structure is assumed to be a handle to a thread. |
CALLBACK_WINDOW | If this flag is specified, dwCallback in the MIDIOPENDESC structure is assumed to be a window handle. |
It is up to the driver to determine the number of clients allowed to use a particular device. Once a device is opened for the maximum number of clients the driver supports, the driver should return MMSYSERR_ALLOCATED for any additional open requests. If the open operation is successful, the driver should use the DriverCallback function to send the client a MIM_OPEN message.
MIDIOPENDESC, MIDM_CLOSE