The following sequence of operations occurs when transferring audio data between a client application and a waveform output device driver:
In addition, the driver must transfer the data it receives from the client to the waveform hardware. This transfer takes place in the background, as an interrupt-driven process. The driver may transfer data directly, or it may use the computer's DMA controller to transfer the data. Whether you choose to transfer data directly or use DMA depends on the capabilities of your target hardware. For input devices, the model is similar, except the client sends the driver an empty buffer. The buffer is filled with audio data directly by the driver or with DMA. The driver notifies the client when the buffer is filled.