A. Custom audio driver
1. custom audio-adapter driver for use with the PortCls system driver (portcls.sys)
2. custom minidriver for use with the AVStream class system driver (ks.sys)
PortCls contains a built-in audio-driver infrastructure and generic functions of a particular
type of wave, midi, or mixer device. Vendor needs to develop miniport drivers that works with
selected port drivers.
B. Choosing a port driver
Wave port driver: wavepci, wavecyclic, wavert
wavecyclic must copy data between its cyclic buffer and the application’s audio buffer
C. Specify the kernel streaming (KS) topology of these devices
Each port driver is paired with a miniport driver to form a KS filter that represents a
particular device (wave, MIDI, or mixer). There are three filter types, waveXxx filter:
represents a wave device that converts a wave output stream to an analog audio signal
or vice versa; MIDI or DMus filter; and topology filter.
Topology nodes: Synth, DAC, ADC, Volume, Mute, Sum, Mux.
The miniport driver presents its topology to the port driver in the form of a
PCFILTER_DESCRIPTOR structure. The structure specifies all the filter’s pins and
nodes, and how the pins and nodes are connected.
an application uses mixerXxx functions to explore the topology by enumerating the sequence of
nodes along each path.
D. Specify Pin Data Ranges use KSDATARANGE_AUDIO

