[This is preliminary documentation and subject to change.]
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.
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).
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.
File DescriptionAdapter.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
© Microsoft Corporation 1999-2000