12 ms·
Why are all Windows drivers dated June 21, 2006?
- RickHull 10y agoUsing the date is obviously a kludge and does not match the semantics of the desired mechanism (3rd party specific drivers overriding baseline system drivers). Nothing profound about this kludge IMHO.
- draw_down 10y agoYeah- it's something, alright. But "profound" is rather a stretch.
- acchow 10y agoAmazing how "bad hack" got labeled as "profound"
- Skunkleton 10y agoSounds like someone from Apple's marketing department got a software degree :)
- astrodust 10y agoIt's a profoundly bad hack. How can anyone justify this? Fix your driver negotiation mechanism. This is like a "Hm, well, I do like weekends and it's 4pm on a Friday..." solution.
- gottam 10y agoIt probably is a good hack from their perspective. Just think of all the "back hacks" windows has.
- Asooka 10y agoIt also lets MS override the manufacturer driver in the future via an update.
- maxander 10y agoImagine- MS pushes out a driver update where the drivers are dated to the actual day they were produced, causing them to necessarily and simultaneously override all custom drivers on every Windows box on the internet. That's not a feature, that's an existential risk to MS as a company.
- ysavir 10y agoBut there is something profound here: That MicroSoft is willing to take a static informational figure (such as a date) and use it for other purposes while doing a poor job of documenting it and handling edge cases. That MicroSoft has let this system sit for 10 years is incredibly profound, in my opinion. Just not in a positive way.
- royjacobs 10y agoSo how would you fix this, keeping in mind you are not allowed to touch the vendor driver's binaries in any way?
- RickHull 10y agoDrivers have a priority field 0-255. Vendor drivers can only use 128-255. System drivers start at 255 baseline. Highest priority (0 is highest) always wins, and ties are broken with version or date comparison or what-have-you. Disclaimer: near zero forethought
- monochromatic 10y ago> keeping in mind you are not allowed to touch the vendor driver's binaries in any way
- DashRattlesnake 10y agoDefault to 192 if an explicit priority is not set.
- krapp 10y agoWhat's certain to happen is all vendors setting all of their drivers to the highest priority possible, all the time.
- jessaustin 10y ago
- cprecioso 10y agoWouldn't it be better if the system knew to assign less priority to Microsoft-signed drivers?
- Someone 10y agoNo. I need some cases, the MS provided driver must take precedence over the vendor one. As a comment to this article says: "I have a USB 3.0 controller in my system where Microsoft took over control of the driver, probably due to the hardware manufacturer going under. Anyway, the driver Microsoft provide is signed by the same certificate as they use to sign other drivers for Windows. But in this case, you would want the Microsoft provided driver to win out over any manufacturer provided driver because they are all broken in some way." Of course they could have separate signing certificates for 'overriding' drivers, but that would be just as much a hack as using the time stamp.
- Alupis 10y agoMaybe I'm missing something, but wouldn't you just choose not to install the vendor driver in this case? It's your system, and if you chose to install the vendor driver (even if it's broken/old), it should use it... no?
- emeraldd 10y agoYou might not have a choice, say the vendor provides software (other than the driver itself) that is required to use the product and forces the driver install at the same time as the software.
- bitJericho 10y agoThere's very few drivers that need to be manually installed anymore. Even fewer that require the absolute deletion of the previous version by the user. It's all automated now.
- thehardsphere 10y ago
- mrweasel 10y ago>And if more than one driver provides a perfect match, then the one with the most recent timestamp is chosen. If there is still a tie, then the one with the highest file version number is chosen. I sort of get WHY they don't priorities highest file version above timestamp, but it also seems to indicate that they have an issue with managing drivers. I'm sure it's more complicated than I imaging, but shouldn't there by a way to tell Windows that you installed a driver and you want to use that one and not the bundled/updated driver from Microsoft... Well I suppose there is, give it a newer timestamp.
- hashhar 10y agoBut then any Windows Update would wipe out that driver.
- jmiserez 10y agoThis reads like they are actually proud of this...!
- astrodust 10y agoSee also: "Why does Windows have so many different system directories?" and "Why are companies still shipping 32-bit-only software?"
- roesel 10y agoConsidering how this is a workaround not properly implementing the needed functionality, I think it's not safe to ask questions like > Are you just a bunch of slackers? since the first answer that comes to mind is "Yes, it would seem so".
- BigChiefSmokem 10y ago"...if more than one driver provides a perfect match, then the one with the most recent timestamp is chosen. If there is still a tie, then the one with the highest file version number is chosen." So check the manufacturer of the driver, and if it's Microsoft then assign the lowest priority. Am I missing something here?
- leereeves 10y agoMicrosoft might be the manufacturer of the hardware, and perhaps in that case they still don't want drivers built and distributed with Windows to override drivers installed separately?
- manmal 10y agoWhy not, since they are more recent?
- deleted 10y ago[deleted]
- Someone1234 10y agoBut different. The drivers provided with the OS are generic. The drivers you can download are bespoke and offer additional features. A perfect example is Microsoft's webcams. The built in driver will run the webcam fine. The downloaded driver adds "fun" overlays, filters, and software to control it. So that's why not. Users won't want their webcam driver being downgraded every time a Windows Update is installed in the background. Even for Microsoft hardware.
- jorblumesea 10y agoThis is especially true for things like graphics cards, where the drivers are so highly custom you wouldn't want generics in the first place.
- chrismeller 10y ago
- 40acres 10y agoMy first thought was 'how ridiculous', but then I started to think of all the times I've utilized 'hacks' like these to get projects working and it's humbling to see that even at the highest level sometimes we are in 'just make it work' mode.
- thehardsphere 10y agoEven at the highest level, they put their pants on one leg at a time.
- jessaustin 10y ago...and sometimes backwards.
- dkonofalski 10y agoThis also causes the most infuriating issue I've ever had with a controller and Windows 10. The "official" driver from the manufacturer hasn't been updated since a final revision in like Windows 7. Windows 10 offers a basic driver, but it's totally broken and the Windows driver constantly updates and overrides the old one. Anytime I want to play a game with this controller, I have to uninstall from device manager and install the old driver but ignore the restart. It works, for some reason, but as soon as the machine gets restarted, the driver is replaced and I get the yellow exclamation point in Device Manager again. Not a great workaround, but I'm glad it works for most things.
- lousken 10y agoI've had the same issue with my TV card. This troubleshooter fixed it for me https://support.microsoft.com/en-us/help/3073930/how-to-temporarily-prevent-a-driver-update-from-reinstalling-in-windows-10 https://support.microsoft.com/en-us/help/3073930/how-to-temp...
- dkonofalski 10y agoThanks! I'll give that a try!
- justin66 10y ago> This also causes the most infuriating issue I've ever had with a controller and Windows 10. According to the text, it's designed to prevent the problem you describe: When the system looks for a driver to use for a particular piece of hardware, it ranks them according to various criteria. If a driver provides a perfect match to the hardware ID, then it becomes a top candidate. And if more than one driver provides a perfect match, then the one with the most recent timestamp is chosen. If there is still a tie, then the one with the highest file version number is chosen. I don't know where this is going wrong for you but both the file version and the timestamp are things you can manipulate on that driver file. Might help, although you're in trouble if the manufacturer's driver isn't a perfect match to the hardware ID.
- 10y ago
- mattnewton 10y agoWow, this is a quick hack around not giving space to metadata about the driver preference and trying to communicate it out of band, and they are passing it off as something to be emulated.
- russellbeattie 10y agoEvery Windows box is different from every other one. Some Windows drivers are way more stable, less-bloated or functional than the OEM's drivers (personal example: Realtek audio) on certain hardware, other times (as seen in this thread) it's the exact opposite. Managing and selecting which driver works well on your particular combo of hardware, and preventing auto-updates from overriding your choices should be a top priority for Microsoft. They desperately want Windows to be as user-friendly as macOS in this area, but the reality is that Windows runs on heterogeneous hardware and in practical terms, it just doesn't work. Right now forcing one particular driver over another is an exercise in pain and uncertainty. You never know if tomorrow you'll wake up to your microphone not working (again) because of an overnight update. It's silly. Just give end users a friendly interface and stop the nightmares.
- spencerhakim 10y agoBut why June 21, 2006, specifically? According to Wikipedia, there was a circulated Pre-RC1 Vista build (but only the first of 3) that was built on June 20th, and June 21st was the first day of summer that year, but neither of those seem like good reasons to pick this date in particular.
- bibinou 10y agoIt was the first version in which they bundled all the third-party drivers. Previous beta releases only had a very limited set of drivers. Microsoft greatly remodeled the driver model in Vista so that's why drivers can't be older than this date.
- mnarayan01 10y agoVista represented a big (for Microsoft anyway) hit to the backward compatibility of drivers (for DRM-CreateProcess related reasons IIRC).
- Sanddancer 10y agoMuch more than that. For example, both audio and video drivers had massive rewrites and rebuilds. Video drivers received a lot of tweaks for DirectX 10. More importantly, MS pushed the entire audio stack to use the User-Mode Driver Framework [1], which resulted in a lot of changes in how audio drivers access the underlying hardware. [1] https://en.wikipedia.org/wiki/User-Mode_Driver_Framework https://en.wikipedia.org/wiki/User-Mode_Driver_Framework
- virtualized 10y agoA typical Microsoft / cowboy programmer "solution". Ever wonder why Microsoft products are so buggy and unrealiable in every possible way? That's because they are built from hacks upon hacks just like this one with no regard for the user experience.
- vortico 10y agoIn the Linux world, instead of a proud "excuse" on a blog, a problem like this would kindle a discussion for a few days on the newslists, and a solution would be proposed and implemented in the following two months, to be accepted in the mainline a week afterwards. In macOS, this problem might stick around for a while, but Apple is forward-thinking enough to find better solutions eventually for problems that aren't necessarily vital but still should be corrected. For Windows, I doubt this will ever be fixed unless they do away with drivers as we know them entirely.
- Sanddancer 10y agoThe Linux "solution" would be to yell at the driver maker to contort their driver to fit the Linux model and put it in tree. A vendor that refused would need to have their driver installer manually blacklist the kernel driver, and get support calls whenever the kernel's updated because the abi breaks again.
- vortico 10y agoThis is true for proprietary drivers, but the many open source drivers and replacement drivers would be fixed by someone in the next weekend after a kernel update, for ABI changes this minor. It might bother the single developer, but after the patch is distributed, it's completely transparent to end users, unlike Windows where you usually need to force every user to manually download the new update.
- nxc18 10y agoThat's true, but then of course you would end up breaking compatibility with lots of things. Linux has their drivers in the kernel tree for the most part, with no promise of backwards compatibility whatsoever. macOS is fine overall, but I've never had a major update not trash major parts of the OS, whether that's the build environment, some subset of GUI apps, or general hardware support. Windows has a driver model. While not a promise, third parties can typically expect drivers to keep on working. I've never experienced an OS other than Windows with such broad hardware compatibility and such broad binary compatibility. Except in rare instances, just about every piece of non-driver software from the Windows 95 era works unmodified on modern 64-bit Windows. AMD64 did not exist when Windows 95 was released. Drivers also typically work unmodified, the major exception being a pretty significant change around the time of Windows Vista.
- oblio 10y agoTo all you nay-sayers, this is Raymon Chen's blog. He has nothing to do with Microsoft's marketing machine and is probably a better engineer than most of us. He's not promoting anything, he's just writing about a tidbit people would be interested in. If you don't believe me, go through his blog archives. You'll most likely learn a thing or a dozen.
- andreareina 10y agoI love this blog. Anytime I see a submission on HN that points to microsoft.com I check to see if it's oldnewthing and if so click through, it's always been an interesting and rewarding read.
- lathiat 10y agobest blog ever and most be one of the longest running, spent a couple of very long nights reading the archives way back to the start in 2003 - crazy!
- cadecairos 10y agoSomething about this must be broken on my Windows 10 partition, because it keeps trying to overwrite my updated Intel Graphics card driver via Windows Update. I ended up having to blacklist the update to stop it from bugging me.
- discreditable 10y agoSometimes the Windows driver is actually better than the vendor driver. I've seen several chipset/SATA drivers (such as Marvell, and AMD) that break TRIM support on SSDs. To get TRIM working I had to revert to the regular Windows driver.
- diogenescynic 10y agoIssues like these are why I hate dealing with Windows anymore. OSX has its flaws too, but I never have to wrry about drivers at least.
- huangc10 10y agoWhat is the significance of June 21, 2006? Why was this date chosen specifically?
- cyberferret 10y agoAh, brings me back to decades ago when we sold and supported custom DOS apps - we would force the installers to change the time of the .EXE file to match the installed version number, e.g. 01:00 am for version 1.0, 01:13am for version 1.13 etc. That way we thought we could tell which version the user was using over the phone by asking them to do a DIR (useful if they couldn't start the application to see the version number in there). Of course, this system rapidly broke down because users would copy the files across to different floppies or hard drives, causing the file dates to be reset to whatever it was at the time!
- clhodapp 10y agoThe worst thing to me is that they seem to think it's OK to do something like this and then not do something in the UI to make the blessedness of the specific date they choose clear.
- deleted 10y ago[deleted]
- wyqydsyq 10y ago> Zac told me, "It's an awesome example of something that seems stupid and insignificant turning out to have a profound purpose." So according to MSoft developers, a property being unused and redundant = a profound purpose? Why not just remove the date criteria completely if you want to ignore it rather than trying to work around it by mutating the data?
- hoppa_liza 10y agoRemoving the date criteria is significant change to the codebase and will eventually require more testing. This might not work well with budget and deadlines.