[wdmaudiodev] Help installing custom sAPO for a USB audio device

  • From: Justin Davis <justindvs@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Sat, 28 Feb 2015 15:43:46 -0800

Hi all,

I've developed drivers for a number of years, but I'm a newbie to audio
drivers.

I'm dipping my toes in the water by trying to install a custom sAPO (the
swap example) for a standard USB microphone (and USB headphones at some
point too).

I've read up on as much info as I can find and I've tried several
examples.  I've had success building and installing the "slate audio"
example from the WDK 8.1 samples.

However, I'm having problems adapting this example to my simple USB audio
device.  I really just want to use the standard USBAudio.sys driver but
supplement it with my sAPO.  I think I have the proper "Include" and
"Needs" section to pull that stuff in from the wdma_usb.inf file.

I think the root of my problem is with putting the right sAPO registration
data in the registry.  I've generally tried to follow the guidance from
this page (and the Vista Audio Effects white paper):
https://msdn.microsoft.com/en-us/library/windows/hardware/ff536810(v=vs.85).aspx

However, it uses lots of INF fragments with HKR, which is relative to how
you get to that INF section.  So it's not 100% clear where those are
supposed to go.  Through looking at the example, I'm pretty sure those keys
need to be installed as part of an "AddInterface" statement...but again
it's not 100% clear.

My problem is that I install via my INF, and I can see the registry keys
get installed to what looks like the proper locations.  But...it sounds
like the installation process is supposed to migrate the sAPO registration
data to another section (below), and this step doesn't appear to be
happening.

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{EP
GUID}\FxProperties

I've found that if I manually hack the above keys to point to my sAPO, it
seems to work (I see my sAPO getting loaded in the audiodg process and my
APOProcess() function is being called).  However...I know I'm not supposed
to hack those keys manually, the INF file is supposed to do something that
causes the keys to be migrated there.  It's just not clear on what's going
wrong in that process.

I'm not at my work machine right now so I can't copy the INF file I've been
working with (I'll add that on Monday).

But any advice on how to troubleshoot this would be greatly appreciated!  I
feel like what I'm trying to do should be simple, I'm just not familiar
enough with the audio subsystem to know what to look for.

BTW, I've seen the "Troubleshooting sAPO Load Failures" page, and I do
have DisableProtectedAudioDG set.  My problem isn't that my sAPO fails to
load, it's that the system doesn't even try to load it (verified this in
the debugger).

Thanks for your help!
Justin

Other related posts: