Search code examples
windows-7filterdriverminiport

Can a Windows audio driver sit atop the default windows driver and post process its output?


Is it possible to write a driver to sit on top of another driver, take the lower driver's output and post process it.

I wanted to write a driver to make sure the volume level was always constant. In my head, this driver would site on top of the audio card driver and post process the output before handing back to the OS to send to the speakers.

I read about MS miniport and this seems to provide some basic guaranteed exposures.

The constant volume level implementation is not what I'm really concerned about in this question. I'm wondering if it is even possible to write a 'filter' driver for lack of a better word so I could do some sound post-processing.

Edit: OK, I'm guilty of not googling this first, turns out it's actually called a filter driver which makes me look like a moron. I would be a total noob at this though, so any good direction, or text would be appreciated.


Solution

  • For Windows Vista and beyond, it is quite challenging to write such an audio driver. That's because Windows Vista audio devices primarily use an I/O mechanism where the audio driver exposes the DMA buffers directly to the audio subsystem or application. So the audio engine writes directly into the DMA buffers of the audio adapter and there is no opportunity for a filter driver to inspect the samples being sent to the audio solution.

    For Vista and beyond, you can achieve the same result with an sAPO which is a processing element that accompanies a driver package that allows the sAPO to inspect and modify audio samples.