
94
What’s the old way? Here’s a simplified diagram:
Audio application
⇓
Echo wave driver
⇓
Echo kernel mode driver
⇓
PCI card
So, you can see the audio application would communicate more or less directly
with our wave driver (it doesn’t really, but that’s close enough for this discussion).
If an application wanted to use a specialized 24-bit format, we could see what it
was asking for and add support for that. This also let us control exactly which
wave devices were listed and how their names were listed.
The new driver is a WDM driver. This means it was natively developed for
Windows 2000 (that is, it’s not a legacy driver running on a newer OS). However,
WDM drivers work differently (again, this is simplified):
Audio application
⇓
Microsoft’s WDMAUD wave driver
⇓
Microsoft’s kernel-mode audio mixer (a.k.a. the kmixer)
⇓
Echo WDM driver
⇓
PCI card
So you can see that there are now several layers of software interposed between
our driver and the application. This means we have had to give up some control
over how this works.
Unfortunately, this causes some pain; the worst of it is the WDMAUD wave driver
breaks most of the software out there that supports 24-bit audio. WDM audio, not
our driver, is now in charge of which wave devices get listed and which formats we
accept.