Microsoft Virtual Audio Driver (MSVAD)

[This is preliminary documentation and subject to change.]

SUMMARY

This sample driver demonstrates the basics of writing a WDM audio driver. This sample uses a step-by-step approach to implement various WDM audio driver features. Each feature is implemented as a separate driver and uses the common classes and services implemented in root directory. The driver developers can use the same framework to implement new features without hardware dependencies.

CadapterCommon gives the miniports access to virtual mixer HW. Also implements the AdapterPowerManagement.

CMiniportMSVADTopology is the base class for all sample topologies. It has very basic common functions. Also common topology property handlers are in this class. The common topology is shown in the below graph.

 

CMiniportWaveCyclicMSVAD is the base class for all sample wave miniports. It has very basic common functions such as property handlers.

CMiniportWaveCyclicStreamMSVAD is the base class for all sample wave streams. It implements a timer-based interrupt mechanism to simulate real DMA interrupts. Its IDmaAdapter implementation copies data to memory instead of DMA.

The following list shows the features implemented in this sample.

simple

Basic driver with wavecyc and topology ports

multistr

Implements multiple playback streams

drmsimp

Implements DRM for simple.

drmmult

Implements DRM for drmsimp

pcmex

Implements WAVEFORMATEXTENSIBLE pins

ac3

Implements AC3 pins for playback

ds2dhw

Implements DirectSound 2D HW support.

 

BUILDING THE SAMPLE

To build this sample, start DDK build environment and run build from this directory.

This sample can be installed only manually. To install the sample, run Control Panel->Add New Hardware Wizard. Select Media Device Category (Sound, video and game controllers). Point the wizard to msvad.inf. Setup will give you a list of MSVAD derivatives with different features. Select one of the drivers and installation should proceed smoothly.

DRIVER ISSUES

 

CODE TOUR

File Manifest

File           Description
 
Adapter.cpp    Connects the driver with the system
Basedma.cpp    IDmaChannel implementation
Basetopo.cpp   Base topology class implementation
Basetopo.h     Base topology class definition
Basewave.cpp   Base wavecyclic class implementation
Basewave.h     Base wavecyclic class definition
Common.cpp     Common object used by all miniports
Common.h       Header file for the common object
Hw.cpp         HW abstraction of MSVAD
Hw.h           HW class definition
Kshelper.cpp   Kernel Streaming utility function implementations
Kshelper.h     Kernel Streaming utility function definitions
Msvad.h        Common definitions
Msvad.inf      Installation inf for this sample
Msvad.rc       Common resource file
Readme.htm     The documentation for this driver (this file)
Savedata.cpp   Writes PCM data to disk.
Savedata.h     Definition of CsaveData class.
Sources.inc    Common sources file included by all sample drivers.
 

Top of page

 

© Microsoft Corporation 1999-2000