[wdmaudiodev] Dynamic Audio Subdevices

  • From: Dang XiaoHui <dangxhfromuestc@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Thu, 18 Nov 2010 14:53:38 +0800


I'm working on a sound driver based on MSVAD simple for Win7.
The two filter is WaveCylic and Topology.

During the first time the device is been emulated by os, StartDevice will
1)install MSVAD topology miniport. 2)install MSVAD wavecyclic miniport.
3) RegisterPhysicalConnection between wavecyclic and topology.

Since my driver can detect the physical connect and disconnect, I want to
notify OS that by unregister/register those miniport and connection.

What I did is:
1) save  topology miniport and wavecyclic pointer to Device extension.
2) during disconnect: use the pointer saved in Device extension To
unregister  topology-> wavecyclic->connection.
3) during connect:     use the pointer saved in Device extension To
 register  topology-> wavecyclic->connection

the unregister works as expected. but after trying to re-register those
sub-device. I got the error similar to

8364392c 927204e4 85f4ba10 85f9b548 86f90c20
83643940 927203df 85f9b550 86f90c24 86f90c28
83643988 9272031c 85f9b550 86915548 85fadc00 portcls!xDispatchCreate+0xba
8364399c 9263aa9a 86915548 85fadc00 86915600 portcls!KsoDispatchCreate+0x17
836439c0 92636778 86915548 00000000 836439ec ks!DispatchCreate+0xe0
836439d0 9271fcd8 86915548 85fadc00 86915548 ks!KsDispatchIrp+0x9f
836439ec 92724ff9 00000000 85fadc00 85f78610 portcls!DispatchCreate+0x4e
83643a04 92725cc8 86915548 85fadc00 83643a70 portcls!KsoDispatchIrp+0x3b
83643a14 8e5873d7 86915548 85fadc00 83643a7c portcls!PcDispatchIrp+0x2d

how can i re-register the subdevice like the Startdevice did? do I need to
re-create miniport again?


Other related posts: