[wdmaudiodev] Re: help needed - upper filter driver sysaudio.sys

  • From: "Sam Tertzakian" <sam@xxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 23 Nov 2005 08:22:00 -0800

Hi, 

 

Trust me.the topic you are asking about is very complicated. Audio drivers
are not like other generic drivers where you can easily hook into all the
entry points using a filter driver and modify or examine data. Basically,
there are several models (about 5 or more) and each model has different ways
of dealing with audio. You also have issues with regard to KMixer which
mixes various audio streams and does sample rate conversion. And many of the
driver are layered in such a way that the class driver calls directly into
the miniport driver so intercepting that can be difficult (if that is what
you need to do).

 

For example, you say you intercept SysAudio.but, the main purpose of
SysAudio is to build various graphs and expose different devices. The actual
audio data does not pass through SysAudio (I don' think.)

 

Certainly I cannot help you much with this.I can only tell you that what you
want to do is going to very difficult.

 

I am not trying to discourage you.I think what you are doing is very
interesting.but, it is not going to be as easy as it might be for other
devices.

 

My guess is you should look at PortCls.sys and Ks.sys and understand what
they do.Also, you should look at some of the diagrams in the DDK that show
the various components of the different audio driver models.

 

You might try doing a search on this group with the string "filter" and see
what comes up.

 

Sorry, I cannot be more helpful.

 

  _____  

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of dinkar raj
Sent: Tuesday, November 22, 2005 7:42 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: help needed - upper filter driver sysaudio.sys

 

Hi Sam,

 

Yes. U are right. 

But the IOCTLs that are sent during data transfer are of this kind.(But
why?)

are these manipulating a cyclic/linear buffer's offset for read and write ?
(I read sometime back something like that..)Where is this buffer for Direct
Sound?

 

what is the exact mechanism of this buffer?And these IOCTLs ?

I am a newbie to this audio world and do bear with me for any mistakes from
my part.

How can I intercept the audio data??

 

I want the thing on XP only, so no problem, and thanks for your advice.


 

On 11/23/05, Sam Tertzakian <sam@xxxxxxxxxxx> wrote: 

1.      KSPROPERTY is not used for audio data transfer. It is used to set
various parameters, some of which will be documented and others may not be. 
2.      SysAudio is not present in Vista. So, your driver will not work on
an OS after XP. 

 

  _____  

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of dinkar raj
Sent: Tuesday, November 22, 2005 1:29 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] help needed - upper filter driver sysaudio.sys

 

Hi ,

 

I have coded an upper filter driver for the sysaudio.sys.

Using Winamp, and direct sound, winamp plays and I start to receive many
userMode Irp's

with IO CTRL CODE == IOCTL_KS_PROPERTY.

I inspected the KSPROPERTY value after dereferencing the UserBuffer pointer
field of the irp .

(Am I right here ?)

And here, when I print the Flags member of the KSPROPERTY value, I get an
undocumented value.

My worry is: How to KdPrint the actual audio data that is being sent thru my
filter driver?

is all what I have done correct?  or is this domain heavily undocumented ?

 

TIA

 

 

Other related posts: