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:
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.