为什么Windows中的所有驱动程序都是2006年6月21日发布的


为什么在Windows的每个新版本中,所有驱动程序的日期都为2006年6月21日? Microsoft是否曾经更新过驱动程序,还是只是一堆便鞋? 最后,我们从Microsoft非正式博客The Old New Thing上的帖子中了解了该问题的答案。

Microsoft的一位开发人员(绰号为zac_1) 解释了问题所在。 神圣的日期06/21/2006甚至扩展到十年前都不存在的诸如Storage Spaces和现代处理器之类的驱动程序,因此这里没有开发人员的懒惰问题。 原因是不同的。

设置古老日期的一个非常重要的原因,与驱动程序的实际发布日期无关。

事实是Windows运行即插即用 (PnP)系统,使您可以快速识别并自动配置计算机上的设备。 它会自动识别新设备的存在,然后选择驱动程序并安装它们,从而使所有功能都能正常运行,而无需手动安装和配置。 自动分配的资源,输入/输出端口,设备内存分配卡等。

因此,当Windows中的PnP系统执行驱动程序排名时,它首先检查设备和驱动程序的硬件标识符。 如果两个驱动程序具有相同的标识符,则系统必须从两个驱动程序中选择一个。 在这种情况下,主要因素是驱动程序日期

想象一下这样一种情况:文件日期是真实的,并且与创建文件的时间相对应。 会发生什么? 假设您的设备可以使用标准的Windows驱动程序,但是您为此设备安装了专有的专用驱动程序。 在这种情况下,对于每个新更新,Windows都会滚动一个新的标准Windows驱动程序,而不是您专有的驱动程序,因为在新版本的Windows中,该驱动程序的日期会更近。 您将不得不每次手动返回正常的驱动程序。

为了避免这种冲突,做出了一个简单而有效的决定。 Windows所有版本的所有驱动程序均分配有与Vista RTM发行日期匹配的标准日期 。 该固定日期与驱动程序版本或实际文件创建日期无关。 同时,驱动程序版本号也会更新-这是在文件创建日期之后选择驱动程序时要考虑的下一个因素。

默认情况下,PnP系统将始终选择专有的专用设备驱动程序(如果存在)。 如果不是,则将安装Microsoft的内置驱动程序,它是最新版本OS的驱动程序。 尽管日期与旧版Microsoft驱动程序相同,但它将具有最高版本号。

在Windows的较新版本中,仅兼容不低于Vista的驱动程序。 第三方Windows XP驱动程序通常与它们不兼容,因此日期冲突没有问题。

因此,即插即用系统可以正常工作,尽管情况看起来有些荒谬。 到目前为止,所有驱动程序的安装日期均为06/21/2006,因此它将继续。 微软公司的上述开发人员Zack说:“这是一个很好的例子,乍一看似乎很愚蠢和微不足道,但实际上却具有深远而坚实的目的。”

正如人们普遍认为的那样:“如果某件事是愚蠢的,但它有用,那么它就不是愚蠢的”(或仍然是愚蠢的,但我们很幸运)。

很难将这种工作机制称为完全称职的编程,因为文件日期是不用于比较驱动程序的属性。 但是该系统实际上是有效的,那为什么不呢? 以及如何通过正确的驱动程序更新解决问题? 如果您对此主题有任何想法,则Microsoft程序员找不到更简单,更可靠的选择。 谁知道,也许他们没有怎么想这个问题-而且确定日期永远是立即实施的第一个想法? 也许问题的解决是由无权实施更胜任系统的开发人员进行的“修复”,例如,检查驱动程序的发布者(如果发布者是Microsoft,则将驱动程序的优先级降到最低)。

多年以来,这种PnP操作机制仍然是Windows的另一种未记录功能,这是很糟糕的,这是该封闭源代码操作系统受到批评的主要原因之一,因为它具有太多我们不知道的未记录功能。

如果Windows的新版本可以解决问题,那么这种日期调整机制可能会进一步发挥作用。 您只需要确保驱动程序不会意外地指出一个早于2006年6月21日的日期,因为在这种情况下,无论版本如何,Windows都会不断滚动其通用驱动程序而不是品牌驱动程序。 如果有的话,在Windows 10中可以暂时禁用 Windows Update的驱动程序更新。

Source: https://habr.com/ru/post/zh-CN401445/


All Articles