How to make aduio data capturable to common audio driver?

Hi, I have a app to receive audio data throuth network, and want these data can be captured
by windows recorder or any other apps that uses standard win APIs.

I’ve read WDK docs on audio driver and get to know about filters,nodes,pins,
and read msvad source code in WDK src, but the audio driver structure is so different from other WDM drivers,
currently I can’t get a full picture about the virtual audio driver.

My question is:
What should my app do to make audio date can be captured by standard win APIs,
can I achieve this by using standard APIs based on common audio driver, or I need to make a special virtual audio driver of my own?

I’m newbie to audio app and driver, and any help is appreciated.

fanggai318wy@163.com wrote:

Hi, I have a app to receive audio data throuth network, and want these data can be captured
by windows recorder or any other apps that uses standard win APIs.

I’ve read WDK docs on audio driver and get to know about filters,nodes,pins,
and read msvad source code in WDK src, but the audio driver structure is so different from other WDM drivers, currently I can’t get a full picture about the virtual audio driver.

My question is:
What should my app do to make audio date can be captured by standard win APIs,
can I achieve this by using standard APIs based on common audio driver, or I need to make a special virtual audio driver of my own?

The Windows Driver Kit has an sample driver called MSVAD – the
Microsoft Virtual Audio Driver – that shows how to implement a virtual
audio device. That’s the right place to start, but it’s not simple.
There is no path to install a user-mode virtual audio device.

I’m newbie to audio app and driver, and any help is appreciated.

You may have a long road ahead of you.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Thank you, Tim

I’ve read MSVAD codes and build them to test.

But to know what the codes mean, I need to know audio data path and contorl path, and want to get the whole picture of it. Tips in WDK docs are too dispersed, are there anyother docs(books, blogs, etc.) talking about audio driver development()?

And do you mean that there is no other way to make audio data capturable using standard APIs based on common audio driver, EXCEPT to make a special virtual audio driver?

fanggai318wy@163.com wrote:

I’ve read MSVAD codes and build them to test.

But to know what the codes mean, I need to know audio data path and contorl path, and want to get the whole picture of it. Tips in WDK docs are too dispersed, are there anyother docs(books, blogs, etc.) talking about audio driver development()?

Audio drivers are Kernel Streaming drivers. There are articles about
Kernel Streaming, although it is a very large and complicated topic. If
you’re familiar with DirectShow, the philosophy is similar. You have
filters that expose pins, and connections are made by connecting pins.
Control is all done through KS properties, and a big part of your time
will be spent in setting up structures to describe the properties you
want to support. In MSVAD, the rubber meets the road in the CopyFrom
and CopyTo functions. That’s where data is actually generated or consumed.

And do you mean that there is no other way to make audio data capturable using standard APIs based on common audio driver, EXCEPT to make a special virtual audio driver?

Right. If you want to be seen as an audio capture device, then you have
to make an audio capture device.

Now, you could build a waveIn device, which is a user-mode DLL using the
multimedia “installable driver” APIs. Technically, that is no longer
supported, but it still works, and is likely to continue working for a
long time to come.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Thank you,Tim

I will build my virtual audio driver based on MSVAD sample.If make any progress, I’ll paste here.