The WaveCyclic port driver provides support for a wave audio device by using a simple cyclic audio buffer. WaveCyclic is appropriate for audio devices with limited direct memory access (DMA) capabilities, including:
Devices that require the cyclic buffer to occupy a single, contiguous block of physical memory.
Devices that cannot access addresses everywhere in physical memory.
The drawback to the WaveCyclic port driver is that it must copy each byte of data in the audio stream. WaveCyclic must copy data between its cyclic buffer and the application's audio buffer. WaveCyclic can allocate the cyclic buffer as a contiguous block of physical memory so that the audio hardware can directly access the buffer. However, the application allocates and accesses its own audio buffer, which is contiguous in virtual memory but not in physical memory.
WaveCyclic can also support older audio devices that lack DMA capabilities and must rely on the system DMA controller for streaming audio data to and from the hardware.