Choosing a Wave Port Driver
When a hardware vendor chooses to write a custom driver that uses PortCls, the next step is to choose one of the system-supplied wave port drivers in PortCls. The wave port driver performs all of the generic control functions for the wave device in the audio adapter. By definition, a wave device renders and captures digital audio streams that have data formats specified by the WAVEFORMATEX and WAVEFORMATEXTENSIBLE structures.
The hardware vendor must supply the custom miniport driver that works in conjunction with the system-supplied port driver.
In Windows Server 2003, Windows XP, Windows 2000, and Windows Me/98, PortCls provides two wave port drivers: WavePci and WaveCyclic. In Windows Vista, PortCls provides a third wave port driver, WaveRT, in addition to WavePci and WaveCyclic.
After selecting a WaveXxx (that is, WavePci, WaveCyclic, or WaveRT) port driver, the hardware vendor must write a complementary WaveXxx miniport driver to control the device-specific functions on behalf of the port driver. Each WaveXxx port driver:
Exposes a WaveXxx-specific software interface to the miniport driver.
Requires the miniport driver to implement a WaveXxx-specific interface and expose it to the port driver.
Because WavePci offers better audio performance than WaveCyclic, WavePci is the preferred port driver in Windows Server 2003, Windows XP, Windows 2000, and Windows Me/98. However, on these Windows operating systems, most existing audio devices use WaveCyclic instead of WavePci. The reason is that WaveCyclic has hardware requirements that are less demanding, and it has a simpler miniport-driver interface.
In Windows Vista, WaveRT is the preferred wave port driver because of its superior performance and inherent simplicity. Although Windows Vista supports the WavePci and WaveCyclic miniport drivers, new miniport drivers can achieve better performance by using the WaveRT port driver.
The following topics briefly describe the three WaveXxx port drivers: