SoundBlaster16

[This is preliminary documentation and subject to change.]

SUMMARY

This sample driver demonstrates the basics of writing a WDM audio driver, and can be used to write your own WDM driver. It will work with any SoundBlaster 16-compatible audio card, but may not use all of the functionality. Please see both the "Driver Issues" section below and the comments in the driver, which will help you add functionality like Power Management to your driver.

BUILDING THE SAMPLE

To build this sample, enter the free or checked build environment and run build from this directory.

The .inf file (Mssb16.inf) 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. Then install the sample from the floppy. Once the driver has been installed successfully with the .inf, simply drop updated driver binaries into \Windows\System32\Drivers on the target machine and reboot to test the new driver.

This sample supports Digital Rights Management for audio (DRM). The sources file has a flag to enable DRM. Note that you will need additional header files for DRM support (http://www.microsoft.com/hwdev/audio).

DRIVER ISSUES

Developers should be aware of the following issues when testing or otherwise using this sample driver.

1. This sample driver shows how to implement event callbacks. However, only Vibra class devices with C16X mixers (CT4170) support this functionality, and this sample driver doesn't support Vibra class devices.

2. This driver does not support the AWE portion of AWE-capable devices such as the AWE32 or AWE64. Since the sample driver does not service the AWE devnode, it does not initialize the AWE devnode. As a result, MIDI played back using the FM synth will not be audible. This is not a bug with the FMSynth miniport or other aspect of the sample driver. It is simply a result of not initializing the AWE devnode.

3. Under some circumstances, wave audio may hang up when the rendering stream is frequently stopped and started. This intermittent problem is specific to SB16 hardware.

CODE TOUR

File Manifest

File		Description

Adapter.cpp	Connects the driver with the system
Common.cpp	Common object used by all miniports
Common.h 	Header file for the common 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 cyclic miniport and the stream object
Minwave.h	Header file for the wave cyclic miniport and the stream object
Mssb16.inf	Setup information
Readme.htm	The documentation for this driver (this file)
Sb16.rc		Resource file containing version information
Sources		Dependency information for compiling
Tables.h	Topology and property tables

Top of page

© Microsoft Corporation 1999-2000