The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
Hello, my name is João Magalhães and I am part of a driver development team.
Our goal is to make a noise cancelling driver, where its architecture goes like this:
The capture would be more or less this:
1 - on Skype (or other application) the user selects the driver's microphone based on Sysvad
2 - the audio engine captures the microphone sound
3 - the audio engine sends the microphone stream to an application to remove noise from the stream
4 - our driver receives the modified stream
5 - our driver sends the stream to Skype
And the reproduction would be more or less this:
1 - on Skype (or other application) the user selects the driver's speaker based on Sysvad
2 - Skype sends the audio stream to our driver
3 - our driver sends the audio stream to an application to remove noise from the stream
4 - the audio engine receives the modified stream
5 - the audio engine sends the stream to the actual system speaker
We will use Sysvad for two porpuses: to get the audio stream from the user-mode application and send it to the speaker via audio engine, and to get the audio stream from the mic via audio engine and send it to this same application.
We thought about using Inverted Call notifications, to warn our application when the audio buffer is ready to be read. I first tried using the Inverted Call example to make a separate device only for this notification system via IOCTL, but I couldn't make sysvad access the notification queue from this other device.
Now I am trying to create the notification queue in Sysvad itself, but its architecture is based on mini-ports to access every audio channel, and I am stuck trying to figure out some way to implement this, and if it is really the best way to do it.
The core questions are: is the inverted call the best way to notify our application when the buffer is ready to be read, and, if it is, which is the best way to do it?
Thanks in advance and regards,
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!|
|Internals & Software Drivers||30 Nov 2020||LIVE ONLINE|
|Writing WDF Drivers||7 Dec 2020||LIVE ONLINE|
|Developing Minifilters||Early 2021||LIVE ONLINE|