Maxim S. Shatskih wrote:
> In WaveRT, there is no communication. A protected User mode service
> periodically checks the pointer positions in the common buffer, which has been
> mapped into its memory space, and reads or writes the buffer directly [this
>
> only available on Vista].
>
So, this is the new thing in Vista’s audio?
Virtually everything is new in Vista’s audio stack. It has almost all
been rewritten in user-mode.
There’s been a serious change in philosophy, too. Previously,
flexibility was the keyword. An OEM or driver vendor had pretty much
complete freedom to implement audio stuff in the way that made the most
sense. In Vista, that’s gone. The application is in control. If the
application didn’t ask for it, it shouldn’t exist. System-wide filters
are taboo. This includes things like acoustic echo cancellation and
noise suppression, which had formerly been implemented as system-wide
filter drivers. And if your product’s philosophy conflicts with the
Microsoft philosophy, you might as well hang it up and go into real
estate. Microsoft does not want any “value add” in the audio stack.
Just pump the bits.
I have heard that, in Vista, there is no more sysaudio.sys, wdmaud.sys,
kmixer.sys and swmidi.sys.
DirectSound’s DLL and wdmaud.drv are now proxies to some “Sound Server” server
process, not read/write/IOCTL senders as they were in pre-Vista. They use some
kind of IPC to this process, the process’s framework replaces sysaudio.sys and
wdmaud.sys, and kmixer+swmidi are now DLLs in this server process.
Server process talks to PortCls in the kernel via IOCTLs, so, the only kmode
part of the audio stack is PortCls + the miniport.
Is the above correct for Vista?
That is fundamentally correct, modulo the details. For WaveRT drivers,
there is absolutely no kernel involvement in streaming. The user-mode
audio server process updates circular buffer pointers that are mapped
directly to the hardware.
However, existing drivers continue to work, for hardware that doesn’t
fit the WaveRT model.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.