I may very well be wrong about the updating on each version thing. I did not check. But I did see it was flagged as update if newer, and with the thing that happened with the missing driver in the installer, I suspected that it might not be
every time.
So, sorry if I guessed wrong. They probably
do link against utility classes and rebuild the driver with each install. Perhaps they can change it, but I suspect the guesses here are very uninformed about what it would take to do so. I don't know, but I do know a
little about it, and I strongly doubt it is as easy as some are making it seem.
and just having it not install correctly on a limited account is a non-starter for me.
This has been brought up twice. Please try to do what Hendrik suggested and report back in that thread if it doesn't work:
You could probably fix it by running MC itself as Admin, and then changing the setting there.
After that, there was a bunch of noise in that thread. I think there's some misunderstanding, but it makes more sense to comment on that there (which I'd been meaning to do). In any case, do what he said and it should fix you up. You only need to do it once.
There are many software applications that need drivers in order to work, and each version of those applications require a minimum driver version.
That's a wildly different thing. You're talking about applications requiring hardware drivers made by different vendors. This is a driver that does something within Media Center itself. It is
part of Media Center. Not the same thing and not relevant. I'd be shocked if you could find a true comparison to what is being done here by anyone else, and certainly not by a small indie software shop.
Unless we're looking at the code, or they tell us, we have no idea how complicated it is to extract the code bases from one another. If you've never written any C++ code at all using DLLs, then you
really have no idea. So stop guessing.
As to the other WDM Driver settings, such as number of channels, sampling rate and bit depth, I'm not sure why they have to be set at all. I would prefer that the WDM Driver simply act as a conduit to accept the audio output of any Windows application, whatever the format is, and pass it as input to MC, which would then do any and all audio processing. Why can't the input format just be detected and passed through? I know that the Windows Driver Module protocols are difficult, and may restrict such an approach, but would it be impossible?
Yes. It is impossible because you can't control what the other applications are doing, by nature. They just play audio to the default audio framework in Windows. This sends it down the DirectSound audio chain, which does all the processing and hands it to the driver in the default format set in Windows (not by the driver). The audio data gets to the driver
last, after all that has happened.
Are there other ways the other applications can use the frameworks? Sure. There's WASAPI. But JRiver can't make all the other applications in the world not use what they want to use. Heck, even VLC player doesn't use WASAPI. So, they have to be able to catch DirectSound and all the other "dumb" APIs, but they're at the end of the chain, and Windows has
already converted it to the default format before it gets there.
Technically, could they maybe inject themselves in front of DirectSound and intercept the API calls and hijack them? Perhaps, but again, for
this feature? That would probably take a mountain of engineering time, only to be broken with the next Windows Update. Not to mention that it might get you called "malware", is absolutely going to be fragile and flaky, and there's no way I'd ever install such a thing on my systems. Installing system hooks that hijack data is a tough road.
So... That brings us to:
1. The driver can control what audio formats it supports.
2. It can't control the default format selected by the user or by Windows itself.
3. It can't reliably guarantee that it has been picked as the default, and each time it updates itself (which it has to do occasionally, at least) this will probably get broken.
I don't know how to solve #3. But, you
can solve #2 by only reporting back
one supported format for #1. If there are any good suggestions for how to solve #3 with working code examples, I'm sure Hendrik would love to take a look.