I'm trying to add effects to the captured data of a microphone before the data reaches any user mode application, i.e. removing certain noise. This shall work independently of the underlying hardware and drivers on Windows 7 and above. If there is a microphone device enabled, then it shall work for it.
I think there are three approaches:
1. writing an APO and installing it by manipulating certain FxProperties entries of the microphone device in the Windows registry.
2. writing a pass through filter driver somewhere around ksthunk, attach to microphone device and intercept certain IoDeviceControl calls containing IOCTL_KS_* control codes.
3. writing a virtual audio device driver, probably based on msvad or sysvad, with only one microphone device. The user has to configure this one as the default capture device. On opening the virtual device with whichever application the driver calls the real hardware microphone device, captures its data and adds the effects.
I accomplished the first approach with the APO, which is the easiest and most reliable one. The second approach is working for CyclicWave drivers, but fails with WaveRT based drivers because of virtual addresses in user mode. Maybe I'm just doing something wrong, but it also somehow feels wrong.
The third approach seems very well possible, but is a lot of work, because of the gigantic msvad and sysvad samples and the way of calling the real hardware microphone device, which presumably has to be done by kernel streaming. The benefit of this approach is, that the driver can be WHQL certified.
So my questions to this subject:
1. What do you consider the best approach? - Are there other approaches?
2. As of what I saw in the HCK and read about WHQL certification it is not possible to certify a standalone APO and there aren't any audio filter driver tests. Is this correct, or is it somehow possible to certify one of these? - Probably by submitting them as a package with the general Microsoft HD Audio driver class?
And my last question in case it is not possible to certify the APO:
If I circumvent the DRM related restrictions by setting "DisableProtectedAudioDG=0" on installation of the APO, users would be able to install this APO as Administrator and benefit of the effects after reboot. In the Microsoft support forum someone asked a similar question and got the response, that it is neither the intended nor the supported way of doing it.
What if I still release my APO to the public with a notice, that DRM related content cannot be accessed while the APO is active. Am I somehow defying any laws and can be accused or charged by Microsoft or is it the responsibility of the user?
Thanks for your help,
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
URL to WDMAUDIODEV page: