I used a patched uxtheme myself; used the Royal Noir theme.... or maybe it wasn't patched and the theme was signed.... I don't really remember. I've patched it before, though.
EAX works for me in crysis, Quake 2:Evolved, ioQuake3, and gzdoom (although I don't know what tech gzdoom uses, it just has a "3d sound" option. I know that quake 2:evolved uses OpenAL for sound, as well, since without it it doesn't have any, heh.
I was going to say half-life 2 worked with 3d sound, but it doesn't appear to have that as an option.
I find the article interesting; since it was only relatively recently that the audio stack was even put into kernel mode, for speed reasons.
But it was completely rewritten, so drivers that took advantage of features in the older audio stack, such as Direct Sound's 3D hardware acceleration,
Nothing has changed.
Windows 2000 dsound.dll: (I was going to use XP but... meh.
Microsoft (R) COFF/PE Dumper Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file dsound.dll
File Type: DLL
Section contains the following exports for DSOUND.dll
00000000 characteristics
38178888 time date stamp Wed Oct 27 16:19:36 1999
0.00 version
1 ordinal base
8 number of functions
8 number of names
ordinal hint RVA name
6 0 0001F53F DirectSoundCaptureCreate
7 1 0001FA97 DirectSoundCaptureEnumerateA
8 2 0001FAAB DirectSoundCaptureEnumerateW
1 3 0001F46F DirectSoundCreate
2 4 0001FA6F DirectSoundEnumerateA
3 5 0001FA83 DirectSoundEnumerateW
4 6 00025EBE DllCanUnloadNow
5 7 00025D40 DllGetClassObject
Summary
3000 .data
4000 .reloc
1000 .rsrc
44000 .text
Windows Vista C:\windows\system32\dsound.dll:
Microsoft (R) COFF/PE Dumper Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file dsound.dll
File Type: DLL
Section contains the following exports for DSOUND.dll
00000000 characteristics
49E0223D time date stamp Fri Apr 10 21:53:17 2009
0.00 version
1 ordinal base
12 number of functions
12 number of names
ordinal hint RVA name
6 0 00028364 DirectSoundCaptureCreate
12 1 00028412 DirectSoundCaptureCreate8
7 2 00028A6E DirectSoundCaptureEnumerateA
8 3 00028A8B DirectSoundCaptureEnumerateW
1 4 00017A61 DirectSoundCreate
11 5 00006D48 DirectSoundCreate8
2 6 00028A34 DirectSoundEnumerateA
3 7 00028A51 DirectSoundEnumerateW
10 8 000284CC DirectSoundFullDuplexCreate
4 9 0002C6D3 DllCanUnloadNow
5 A 000186D4 DllGetClassObject
9 B 00028200 GetDeviceID
Summary
26000 .data
3000 .reloc
1000 .rsrc
44000 .text
1000 RT_CODE
what's critical here is the DllCanUnloadNow and DllGetClassObject; this marks these two dlls as COM components. COM components are always user-mode.
My point? DirectSound3d has been in user mode all along; meanwhile, with w2k and XP, the Kernel MIXER is what was in the kernel. What interfaces with the kernel-mode mixer? the drivers. Basically, the article is wrong about it.
They say that it goes Application->Kernel mixer->Direct Sound->Driver.
but what is actually happening is it goes Application->DirectSound API->Driver->Kernel Mixer
In fact, this is essentially part of the directsound API; also, Directsound3d includes emulation of 3d sound hardware where none is available. Guess what DirectSound asks to see if it's available? The driver. Because that is the next layer down. If the manufacturer is to lazy to create a proper driver, they might you know, simply return that it doesn't have that capability.
Of additional note, only <some> of the kernel-mode sound architecture was moved to User-mode; the main goal of which was to make it so that failed sound driver installs or simply crappy buggy drivers won't cause a Blue screen error, and so you can switch Sound drivers without a reboot.
Additionally, switching some of the low-level stuff to user-mode meant that a lot of the requests made by applications could be services without switching to kernel mode; simple stuff like asking for the capabilities of the hardware and so forth no longer require a jump to Ring 0 code. Also, I might point out that the previous mixers use 16-bit Integer arithmetic; the new architecture uses 32-bit floating point, which improves accuracy and fidelity across the board.
It's a bit unfortunate, but as a result Vista's audio stack is not hardware accelerated. Of course, neither is Windows XP's by default, but when you add hardware like an Audigy 2 or X-Fi sound card (that has a DSP) and the requisite drivers, you basically hardware-accelerate Windows XP's audio. Vista doesn't really work this way, and though the software audio is dramatically improved, you can't just accelerate it by adding a sound card with hardware acceleration. Truthfully, this is primarily a concern of games, which we hope won't be affected much. The only company making mass-market audio cards with hardware acceleration is Creative, and they're doing a good job of promoting OpenAL as the audio standard for games. OpenAL drivers under Vista should allow for hardware acceleration of 3D audio every bit as good as the latest DirectX + EAX. This is the important point; when you were using XP, your 3d sound was never hardware accelerated to begin with; it's always been a emulation.
So, now you get crashes in certain 3d-sound modes. This is curious; and most notably does not involve any windows architecture change at all- your 3d-sound is still emulated by the creative drivers; it passes the "emulation" to the mixer and that get's output. since that passed stream is flat (no 3d calculation, no voices,etc) then it's logical to assume that your crashes are occuring because of creative's sloppy work with the emulation.
if it's any consolation; the driver works fine for any number of voices if it doesn't have to fall-back on emulation and has the actual hardware to work with.
As a closing remark, it's curious how the article you linked was posted 4 days before windows vista was released.