From a kernel perspective, it sounds like you need a
filter driver. I know nothing about sound card drivers
but I have written other types of filter drivers and I
think the concepts are the same. The filter driver would
filter some kind of sound card driver in the kernel.
With a filter driver, you would attach it to the sound
card driver and then all commands (irps) that are sent to
the sound card driver will first be received by your
filter - you can then do your preprocessing before you
pass the irp to the sound driver. You can also register
a completion routine so that when the sound driver has
completed the command your completion routine will get
called and then you can do some more processing if you
need to.
Look up ddk docu for help on filter drivers and also
there may be some kind of dedicated interface for sound
card drivers.
Hope this is helpful.
Steve