The WaveRT port driver has performance advantages over both the WavePci and the WaveCyclic port drivers. WaveRT avoids any need for intervention by the miniport driver in the flow of audio data between the application and the audio hardware. This feature is particularly important for clients running Windows Vista that use real-time threads to reduce audio-stream latencies. In contrast, while streaming audio data, a WaveCyclic miniport driver must copy data, and a WavePci miniport driver must continually acquire and release mappings that contain audio data.
A WaveRT miniport driver is similar in complexity to a WaveCyclic miniport driver. Unlike WavePci and WaveCyclic miniport drivers, a WaveRT miniport driver is responsible for allocating the physical memory pages that comprise the audio buffer used by the application. By controlling buffer allocation, the miniport driver can compensate for any limitations in its DMA hardware. If the device cannot perform scatter/gather DMA transfers, the driver can allocate a contiguous block of physical memory for the buffer. If the device cannot access all of physical memory, the driver can allocate the buffer from the physical memory that it can access.
Thus, existing audio hardware with these kinds of limitations can use the WaveRT port driver. However, new WaveRT-compatible audio hardware should be designed to support scatter/gather DMA transfers, addressing that is at least 32-bit, and a wall clock register and DMA position registers that can be mapped to user-mode virtual memory. For more information, see the white paper titled A Wave Port Driver for Real-Time Audio Streaming on the audio technology page on the WHDC website.
The WaveRT port driver is available beginning in Windows Vista.