Sent to an audio mixer device driver to allocate a specified device for use by a client application. This message is normally sent to an audio mixer driver in response to a mixerOpen call. Applications using the audio mixer functions are not required to open a device to use it, but they must do so if they desire line and control notification callbacks.
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 memory. |
MMSYSERR_NOTENABLED | The driver failed to load or initialize. |
dwParam1
Specifies a pointer to a MIXEROPENDESC structure. This structure contains additional information for the driver, such as instance data and a callback for the client.
dwParam2
Specifies option flags for opening the device.
CALLBACK_EVENT | Specifies that MIXEROPENDESC.dwCallback is an event handle. |
CALLBACK_FUNCTION | Specifies that MIXEROPENDESC.dwCallback is a callback procedure address. |
CALLBACK_THREAD | Specifies that MIXEROPENDESC.dwCallback is a thread handle. |
CALLBACK_WINDOW | Specifies that MIXEROPENDESC.dwCallback is a window handle. |
The driver must determine the number of clients allowed to use a particular device. Once a device is opened for the maximum number of clients that it supports, that driver should return MMSYSERR_ALLOCATED for any additional open requests.
A mixer driver must be written to allow multiple opens on a single device (thus allowing more than one client to receive notifications).
An audio mixer driver must support this message. The Mixer Manager will validate the following parameters for the MXDM_OPEN message before calling the driver. Your driver does not need to check for the following conditions:
1 dwParam1 will contain a valid pointer to a MIXEROPENDESC structure. This structure will be at least large enough to hold the base MIXEROPENDESC structure members. All members of this structure will be valid.
2 dwParam2 will be a valid combination of flags.
Note
The Mixer Manager might combine several opens and closes from many applications. During debugging, if you notice that only one MXDM_OPEN message gets sent even if more than one application opens the device, the Mixer Manager probably has combined the open requests.