[wdmaudiodev] problem with multiple subdevices and topology: help please

  • From: "Philip Lukidis" <pagefault0x0@xxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 2 Jul 2003 13:47:58 -0400

Hi all.

I have an audio driver (port driver is portcls.sys), with 3 wave subdevices.
I want the user to be able to use sndvol32 to regulate the wave, CD and
SYNTH playback volumes for each wave subdevice.  So the topology miniport
has to reflect this, and be properly connected to the wave subdevices.

With WinXP, I have found at least 2 successful ways of doing this:

a) I create 3 topology miniports, and connect them to their corresponding
wave miniports via PcRegisterPhysicalConnection.  The topology miniports are
the same, and quite simple; in fact for now they
just have a wave volume and mute nodes declared.  There are two pins to each
topology miniport, with the
first pin connected to the output of its WAVE subdevice (its category is
KSCATEGORY_AUDIO), and the second
serving as the output (its category is KSNODETYPE_SPEAKER).  This method
also works with Win2k.

b) I create 1 topology miniport, with 3 input pins.  Each input pin is
connected to its corresponding WAVE
subdevice via PcRegisterPhysicalConnection.  All these pins feed into a sum
node, which then feeds into the
wave volume and then the wave mute.  Finally, the wave mute is connected to
the output pin, which is of

Both these methods work fine under WinXP (method a is confirmed to work with
Win2k), except in the second
method I have an extra volume displayed, probably due to my sum node.  I can
regulate the volumes for each
wave subdevice as expected.

However, under Win98SE/ME, these methods do not work at all.  While the
volumes for the first wave subdevice
are displayed OK in sndvol32, using them has no effect.  Worse, there are no
other subevices in the playback
menu of sndvol32; the volumes for the last 2 subdevices cannot be displayed
at all.  NewStream is not even
called when I try and use the MS supplied synth and my wave subdevice.

When I tried a variant of method a), I had some success in 98SE/ME.  The
variation was to create and connect
only 1 subdevice-topology pair at once.  Creating and connecting more than 1
pair results in the same
symptoms as I've described above.  It therefore seems to me that my property
handlers are functioning OK.

Could anyone give me some clue about what I am doing incorrectly?  In the
past I have always had to deal with
1 wave subdevice, which never have me any problems with the topology.

Philip Lukidis

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx


Other related posts: