When the ACM provides a buffer of audio data to a synchronous driver for conversion, the driver converts the buffer and then returns to the ACM. This is the most common type of driver. This driver typically converts audio data using software algorithms executing on the host processor.
On the other hand, an asynchronous driver queues the buffer and immediately returns to the application. The driver processes the queue of buffers and notifies the ACM as it finishes each buffer. This driver typically utilizes special hardware (for example, a DSP) to convert (compress or decompress) audio data.
An asynchronous driver notifies the ACM and applications of the progress of a conversion stream using callback messages. There are three callback messages related to ACM conversion streams: MM_ACM_OPEN, MM_ACM_DONE, and MM_ACM_CLOSE. For information about these messages, see the acmStreamConvertCallback function in the Win32 Multimedia Programmer's Reference.