AC97 WDM Audio Driver Sample

[This is preliminary documentation and subject to change.]

SUMMARY

This sample driver demonstrates the basics of writing a WDM audio driver. The sample driver should work with any AC97 codec connected to an Intel® motherboard with integrated AC97 controller, like the Intel 810 Chipset. The sample driver supports multi channel audio and builds a mixer topology depending on the AC97 codec in the system.

Its functionality may be expanded for non-AC97 design features or to convert the driver to use a different DMA engine. For more information, please see the "Driver Issues" section below.

BUILDING THE SAMPLE

To build this sample, enter any Windows .NET or Windows XP build environment and run buildcZ from the AC97 directory (parent directory).

The INF file named ‘AC97smpl.inf’ included in the AC97 subdirectory (parent directory) can be used to install the sample driver after it has been built. Simply copy the INF and the driver binary to a floppy disk and then update the driver for the device with the one from the floppy. Note however, that the INF file tries to install the proppage sample and may want additional binaries. Please refer to the ‘readme’ in the parent directory for more information.

Once the driver has been installed with the INF, the driver may be updated by copying the binary into %SystemRoot%\System32\Drivers on the target machine and rebooting to test the new driver, provided that there are no INF changes.

DRIVER ISSUES

1. At the time of writing, there is no AC97 implementation available for Alpha or IA64 machines—therefore, the DDK sample source does not install on Alpha or IA64 machines.

2. This driver supports the old Intel 810/820/840 implementation as well as the new Intel 815/820 implementation (82801BA/BAM). This new chipset supports multi channel AC97 codecs, but the sample driver will only run satisfactorily with 100% AC97 compatible codecs. The double data rate playback (96KHz, for example) feature is unsupported by those chipsets and therefore also in the driver.

3. The AC97 low-priority Microphone recording capability is disabled. You can record using Microphone as you would record from any other source (for example, a CD) using the normal recording selector, but the second recording line that is optionally defined in the AC97 specification is disabled.

4. The AC97 inputs reported to the operating system may be disabled through the INF. The INF has a section where you can disable specific input lines of the codec that are not attached to any adapters.

5. This driver works with Microsoft® Windows® 2000 (or later) and Microsoft Windows 98 Second Edition (or later) only. It will neither run nor install on the original release of Microsoft Windows 98.

6. Due to HW constrains in the Intel 440MX chipset, this driver cannot run reliably on this chipset. Therefore, please do not add PnP IDs that contain PCI\VEN_8086&DEV_7195.

CODE TOUR

File Manifest

File           Description
 
Ac97reg.h      Definition of the AC97 registers
Ac97smpl.inf   Setup information
Ac97smpl.rc    Resource file containing version information
Adapter.cpp    Connects driver with the system
Adapter.h      Header file for adapter.cpp
Common.cpp     Common object used by all miniports
Common.h       Header file for the common object
Debug.h        Debug output support
Guids.h        Private GUIDs used by the driver (like name definitions)
Ichreg.h       Defines the registers of the INTEL AC97 interface (ICH)
Ichwave.cpp    Implementation of the stream object (DMA programming)
Ichwave.h      Header file for the stream object
Makefile       Standard Windows NT makefile
Mintopo.cpp    Implementation of the topology miniport
Mintopo.h      Header file for the topology miniport
Minwave.cpp    Implementation of the wave PCI miniport
Minwave.h      Header file for the wave PCI miniport
Prophnd.cpp    Implementation of the property handler (part of the topology miniport)
Readme.htm     Documentation for this sample (this file)
Shared.h       Header file shared by every C++ source file
Sources        Dependency information for compiling
 

Top of page

 

 

 
 

© Microsoft Corporation 1999