[wdmaudiodev] Question on adding Audio Processing Object into existing device

  • From: "Koll, Rob" <Rob.Koll@xxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Mon, 26 Sep 2016 18:51:45 +0000

Hello all,


I am attempting to add an APO into an existing driver.


Starting point is the SWAPAPO from the SYSVAD example from MSDN. I added lots 
of debug into it, which I can see in the debugview tool. At least, when I use 
the audio endpoints from the virtual device driver. As far as I can judge, the 
MSDN example is working correct on my Windows 10 test machine. Including 
showing the expected debug output, especially from the APO APOProcess function.


I want to use the APO in the audio path of other devices, like a RME device 
(just as that was available and allows feeding defined audio from another 
machine and optical cables between 2 of those devices). For that device, I do 
have the original installer, which is an executable. That leaves no real option 
to tweak the .inf file.


I was able to kind of reverse engineer that installer. The .inf file is found 
in the driver store, other files in other locations. From that I created an 
.inf file based installer, which has proven to be able to install the driver 
for the RME device.


Then I tweaked the .inf file, to add the registrations needed to patch the 
SWAPAPO into the audio path of the audio endpoints of the RME device. This last 
step is however not working. I can see in the debug view output that the dll 
that belongs to the SWAPAPO is loaded and unloaded upon attempting to play or 
record audio from the RME audio endpoints (using Audacity). But there seems to 
be no more activity from the SWAPAPO dll.


I am quite confident that the .inf is processed. Upon opening the properties of 
the end points from the RME device I can see the added GUI pages from the 
SYSVAD example. That part seems to work correct. I also added writing some 
totally not relevant registry items. These are written and suggest to me that 
the relevant parts of my patched file are processed.


First of all, is it possible in your opinion to tweak an existing driver 
package to include an additional APO as described above ?


If yes, how could I investigate this, find the reason for not using the SWAPAPO 
?


Is there any tooling to visualize the audio graph, including the use of any 
APOs ?


One aspect that may play a role here is the fact that the SYSVAD example 
produces a driver that is digitally (test) signed. That seems to work. For my 
patched RME installer, there is no more a valid signature. So I use the test 
machine in "not driver signature enforcing" mode. I assume that should work. Is 
that correct ?


If this procedure of adding an APO into an existing driver is not able to work, 
how would achieve this otherwise?


Are there procedures to add APOs into a system without having full control on 
the driver sources? Can it be done without even using .inf files?


Kind regards

Rob Koll


________________________________
The information contained in this message may be confidential and legally 
protected under applicable law. The message is intended solely for the 
addressee(s). If you are not the intended recipient, you are hereby notified 
that any use, forwarding, dissemination, or reproduction of this message is 
strictly prohibited and may be unlawful. If you are not the intended recipient, 
please contact the sender by return e-mail and destroy all copies of the 
original message.

Other related posts: