Miniport Driver Types by Operating System

When you develop your own audio driver, you must determine whether your driver will work in conjunction with the PortCls system driver (Portcls.sys) or with the AVStream class system driver. If a video stream is not necessary, you will probably want a driver that works with the PortCls system driver. For more information about these two types of system drivers, see the Introduction to Port Class and AVStream Overview topics.

The PortCls system driver (Portcls.sys) provides several built-in port drivers to support audio devices that render and capture wave and MIDI streams. Typically, a port driver provides the majority of the functionality for each class of audio subdevice.

Each port driver works in conjunction with a miniport driver. The miniport driver manages the hardware-dependent functions of a wave-rendering or wave-capture device. In other words, the miniport driver provides support for functionality that is specific to the hardware of the third party audio device.

The type of miniport driver that you develop is determined by your target Windows operating system and the features that are provided by your audio device. The following table shows the different types of miniport drivers and the Windows operating systems that support them.

Miniport driver Windows XP Windows Vista Windows 7

WaveCyclic

x

x

x

WavePci

x

x

x

WaveRT

x

x

Topology

x

x

x

MIDI

x

x

x

DMus

x

x

x

Each port driver implements an interface, which it presents to the miniport driver. To communicate with the port driver, the miniport driver must also implement an interface. For more information about the interfaces that are implemented by the miniport drivers, see Miniport Interfaces.

Note   When you develop audio drivers for Windows Vista and later operating systems, be aware of the following:

  • You cannot obtain a logo qualification for a WaveCyclic- or a WavePci -based audio driver.

  • There is no support for kernel-mode software synthesizers for DMus. However, support is provided for hardware MIDI I/O.