WavePci Port Driver

Important  The use of WavePci is no longer recommended, instead use WaverRT.

The WavePci port driver manages the playback or recording of a wave stream by an audio device that can perform scatter/gather DMA transfers to or from any location in physical memory. With scatter/gather DMA, the device can process audio data in a buffer consisting of a series of mappings. Each mapping is a block of physically contiguous memory, but successive mappings are not necessarily contiguous to each other. The WavePci-compatible device is a hardware function on an audio adapter. Typically, the adapter is part of an integrated chipset on the motherboard or is mounted on an audio card that plugs into a PCI slot on the motherboard. The adapter driver provides a corresponding WavePci miniport driver that binds to the WavePci port driver object to form a wave filter that can capture or render a wave stream.

The WavePci port driver exposes an IPortWavePci interface to the miniport driver. IPortWavePci inherits the methods in base interface IPort. In addition, IPortWavePci provides the following methods:

IPortWavePci::NewMasterDmaChannel

Creates a new master DMA channel object. IPortWavePci::Notify

Notifies the port driver that the DMA controller has advanced to a new position in the audio stream. The WavePci port driver also exposes an IPortWavePciStream interface to each of the miniport driver's stream objects. IPortWavePciStream inherits the methods in base interface IUnknown. IPortWavePciStream provides the following additional methods:

IPortWavePciStream::GetMapping

Gets the next mapping from the port driver. IPortWavePciStream::ReleaseMapping

Releases a mapping that was previously obtained by a GetMapping call. IPortWavePciStream::TerminatePacket

Terminates an I/O packet even if it is only partially filled with capture data. An I/O packet is a portion of the audio buffer consisting of all the mappings that are associated with a particular mapping IRP.

The WavePci port and miniport objects communicate with each other through their respective IPortWavePci and IMiniportWavePci interfaces. In addition, the WavePci port and miniport stream objects communicate with each other through their respective IPortWavePciStream and IMiniportWavePciStream interfaces.