none
Virtual audio device driver - UMDF, KMDF, AVStream, WDM??

    Question

  • Hello,

    I'm looking to write a virtual device driver to emulate an audio device, but am unsure of which model is the "right" one for this application. Some sources recommend UMDF and KMDF wherever possible as it's the "new" thing, but other sources say AVStream and WDM is the way to go for audio.

    What is the right/canonical model to use for this? UMDF, KMDF, AVStream, WDM??

    Friday, May 27, 2011 12:29 AM

All replies

  • Anthony_P wrote:
    >
    >I'm looking to write a virtual device driver to emulate an audio device,
    >but am unsure of which model is the "right" one for this application.
    >Some sources recommend UMDF and KMDF wherever possible as it's the
    >"new" thing, but other sources say AVStream and WDM is the way to go
    >for audio.
     
    UMDF and KMDF are not appropriate for streaming drivers.
     
    If it satisfies your needs, the easiest method is to write a DirectShow
    source filter.  It's possible to register that so it appears to be an audio
    capture device.  That fools many, but not all, applications.
     
    If not, then you'll need to go AVStream.  There is a sample virtual audio
    driver in the WDK in the MSVAD sample.  This is not for the faint of heart.
    Audio drivers are complicated.
     
    There is a commercial product called Virtual Audio Cable that can satisfy
    many virtual audio needs.  You might check that out first.
    --
    Tim Roberts, timr@probo.com
    Providenza & Boekelheide, Inc.
     

    Tim Roberts, DDK MVP Providenza & Boekelheide, Inc.
    Friday, May 27, 2011 6:30 AM
  • Hey Tim, good advice, but isn't MSVAD technically a 'portcls' WDM audio miniport driver and not an Avstream driver? 

     


    Mark Roddy Windows Driver and OS consultant www.hollistech.com
    Friday, May 27, 2011 7:15 PM
    Moderator
  • Thanks for the info Tim!

    I plan to advertise an input device that streams audio from a file (and later other sources).  I've heard mention of the DirectShow filter, but if AVStream is the more robust way around it I'll dive right in. It'll be my first time writing drivers, but I feel a bit more confident just knowing which framework to use.

    It's funny you mention VAC! The reason I'm embarking on this is to build essentially the same thing as VAC except I hope to make it freely available.

    @mark, I remember also seeing portcls listed alongside AVStream here:

    http://msdn.microsoft.com/en-us/library/ff554652%28VS.85%29.aspx

    I'm not sure what the difference is, but I'm hoping the above documentation covers it in my readings.


    Saturday, May 28, 2011 9:09 AM
  • markRoddy wrote:
    >
    >Hey Tim, good advice, but isn't MSVAD technically a 'portcls' WDM
    >audio miniport driver and not an Avstream driver? 
     
    There you go, getting all technical on me.  Yes, you are correct.  Many of
    the concepts are the same, but the dispatching is quite different.
    --
    Tim Roberts, timr@probo.com
    Providenza & Boekelheide, Inc.
     

    Tim Roberts, DDK MVP Providenza & Boekelheide, Inc.
    Saturday, May 28, 2011 10:10 PM

  • It's funny you mention VAC! The reason I'm embarking on this is to build essentially the same thing as VAC except I hope to make it freely available.


    Did you ever make any headway on this?

    I am also interested in a "virtual" audio input device.

    I did build this recently, which you may be interested in:

    https://github.com/rdp/virtual-audio-output-sniffer

    But it's not as flexible as VAC, etc. etc.

    Tuesday, November 22, 2011 6:29 PM
  • Hi Tim,

     

    I am interesting in how to implement the virtual audio driver with AVStream.

    For example, if I want to make a microphone driver(Let Windows recognize it as Microphone just like the virtual PortCls miniport driver), there is no any sample code. How to quick start it?

    Could you please show some suggestions? Thanks in advance.

     

    Many thanks,

    Audleyswood

     

    Wednesday, November 23, 2011 10:09 AM