Miniport Interfaces

As described in Supporting a Device, the PortCls system driver provides a set of built-in port drivers for managing wave and MIDI devices. To use one of these port drivers to manage a particular type of audio device, the adapter driver must provide a corresponding miniport driver that complements the port driver by managing all the device's hardware-dependent functions.

This section discusses the following miniport driver types:

WaveRT Miniport Driver

Complements the WaveRT port driver by managing the hardware-dependent functions of a wave rendering or capture device that uses a cyclic buffer for audio data.

Topology Miniport Driver

Complements the Topology port driver by managing the various hardware controls (for example, volume level) in the audio adapter's mixer circuitry.

MIDI Miniport Driver

Complements the MIDI port driver by managing the hardware-dependent functions of a simple MIDI device.

DMus Miniport Driver

Complements the DMus port driver by managing the hardware-dependent functions of an advanced MIDI device.

Each port driver implements an IPortXxx interface, which it presents to the miniport driver. In turn, the miniport driver must implement an IMiniportXxx interface, which the port driver uses to communicate with the miniport driver. The following table shows the IPortXxx interface and the corresponding IMiniportXxx interface for each device type.

Device Type Port Driver Interface Miniport Driver Interface

WaveCyclic

IPortWaveCyclic

IMiniportWaveCyclic

WavePci

IPortWavePci

IMiniportWavePci

WaveRT

IPortWaveRT

IMiniportWaveRT

Topology

IPortTopology

IMiniportTopology

MIDI

IPortMidi

IMiniportMidi

DirectMusic

IPortDMus

IMiniportDMus

In the preceding table, all IPortXxx interfaces are derived from base interface IPort, and all IMiniportXxx interfaces are derived from IMiniport.