Custom Audio Drivers
Audio devices that are not UAA-compatible require vendor-supplied custom drivers. In addition, a UAA-compatible audio adapter can incorporate proprietary features that are not supported by the UAA class drivers; these features are accessible to applications only if the vendor provides a custom audio driver. Only the standard UAA features are accessible through the system-supplied UAA drivers. For information about UAA-supported features, see the white paper titled Universal Audio Architecture on the audio technology page on the WHDC website.
Two options are available to hardware vendors for writing custom audio drivers: developing a custom audio-adapter driver for use with the PortCls system driver (Portcls.sys), or developing a custom minidriver for use with the AVStream class system driver (Ks.sys).
Most custom drivers for audio adapters use PortCls, which is supplied as part of the operating system. PortCls contains a built-in audio-driver infrastructure that makes the task of writing a custom audio driver easier. PortCls implements several port drivers, each of which is specialized to manage the generic functions of a particular type of wave, MIDI, or mixer device. After selecting an appropriate set of port drivers to manage the audio functions on the audio adapter, the vendor develops a complementary set of miniport drivers that work in conjunction with the selected port drivers and control the hardware-dependent features of the audio devices.
The vendor can also support an audio device by developing a custom AVStream class minidriver. The minidriver works in conjunction with the AVStream class system driver, which is supplied as part of the operating system. Implementing an AVStream driver is more difficult than using PortCls, but doing so might still be appropriate for devices that integrate audio and video. An AVStream driver might also be necessary for an existing USB or IEEE 1394 audio device that fails to comply with the requirements of the system-supplied USBAudio or AVCAudio class system driver.
For nearly all PCI audio adapters that require vendor-supplied custom drivers, vendors should choose PortCls.
The PortCls system driver (Portcls.sys) is available on Windows Vista, Windows Server 2003, Windows XP, Windows 2000, and Windows Me/98. The device driver interfaces (DDIs) in PortCls are essentially the same in all of the previously mentioned Windows operating systems. By relying on PortCls, a vendor can develop a single adapter driver that works in all the Windows operating systems mentioned previously.
The AVStream class system driver (Ks.sys) is available in Windows Vista, Windows Server 2003, and Windows XP. In addition, AVStream is available in Windows 2000 and Windows Me/98, but only if Microsoft DirectX version 8.0 or later is installed. However, AVStream lacks most of the audio-specific support functions that exist in PortCls.
In Windows 2000 and Windows Me/98, the Stream class system driver (Stream.sys) provides general streaming support for audio and video devices. In Windows XP and later, Stream has been superseded by AVStream. Microsoft currently supports Stream on an as-is basis for the benefit of existing Stream class minidrivers.