Audio device drivers are dynamic-link libraries (DLLs) written in C or assembly language, or a combination of the two languages. You can combine drivers for different types of audio devices in a single DLL. For example, the Sound Blaster driver module, SNDBLST2.DRV, has drivers for waveform input and output as well as MIDI input and output.
The MMSYSTEM module of Windows provides the interface between client applications and audio device drivers—applications do not call the drivers directly. When a client application calls a low-level audio function, MMSYSTEM translates the call into a message and sends the message to the appropriate device driver. When a device driver must notify a client, it calls MMSYSTEM with a message, and MMSYSTEM routes the message back to the client application, as shown in the following illustration: