WaveCyclic Miniport Driver

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

A WaveCyclic miniport driver manages the hardware-dependent functions of a wave-rendering or wave-capture device that uses a cyclic buffer for audio data. The cyclic buffer is typically a single block of contiguous physical memory and can be located in a region of memory of the driver's choosing. A device with any of the following limitations should provide a WaveCyclic miniport driver rather than a WavePci miniport driver:

  • The device lacks DMA hardware.

  • The device's DMA hardware can access data only in a buffer that occupies a single block of contiguous physical memory.

  • The device's DMA hardware is unable to access data in all regions of physical memory.

A WaveCyclic miniport driver should implement two interfaces:

  • The miniport interface supports miniport driver initialization and stream creation.

  • The stream interface manages a wave stream and exposes most of the miniport driver's functionality.

The miniport interface, IMiniportWaveCyclic, inherits the methods in the IMiniport interface. IMiniportWaveCyclic provides the following additional methods:

IMiniportWaveCyclic::Init

Initializes the miniport object.

IMiniportWaveCyclic::NewStream

Creates a new stream object.

The stream interface, IMiniportWaveCyclicStream, inherits the methods in the IUnknown interface. IMiniportWaveCyclicStream provides the following additional methods:

IMiniportWaveCyclicStream::GetPosition

Gets the device's current position in the wave stream.

IMiniportWaveCyclicStream::NormalizePhysicalPosition

Converts a physical buffer position value into a time-based value.

IMiniportWaveCyclicStream::SetFormat

Sets the data format of the wave stream.

IMiniportWaveCyclicStream::SetNotificationFreq

Sets the frequency at which notification interrupts occur.

IMiniportWaveCyclicStream::SetState

Sets the state of the wave stream.

IMiniportWaveCyclicStream::Silence

Copies silence into a buffer.