即插即用管理器处理计算机的所有即插即用事件,并且适用于所有设备。 即插即用管理器的文档记录在即插即用中。 即插即用简介 概述了即插即用安装,以及各种内核模式和用户模式组件如何交互。
Windows 98/Me 与 Windows 2000 及更高版本之间的打印机安装差异
Windows 2000 及更高版本上的即插即用体系结构与 Windows 95/98/Me 上的体系结构不同。 最重要的区别是:
Windows 2000 及更高版本随附的驱动程序包含在操作系统安装时安装的文件 driver.cab中。 此文件包含所有类型的设备的即插即用驱动程序,因此用户通常不需要原始安装媒体来安装驱动程序。
安装特定驱动程序几乎不需要用户干预。 如果由Microsoft进行数字签名的 Windows 2000 或更高版本驱动程序位于 driver.cab 或已安装在计算机上,即插即用验证驱动程序的签名并安装驱动程序,且无需用户干预。 这种类型的安装称为服务器端安装。 如果驱动程序在系统上不可用或未签名,或者驱动程序安装需要与用户(通过用户界面元素)交互,即插即用将还原为客户端安装。 在大多数情况下,当计算机启动并连接了新的即插即用设备时,该设备在用户登录之前就已安装完毕并准备好使用。
如果用户必须能够选择要安装的驱动程序,则可以在 INF ControlFlags 节中使用 InteractiveInstall 指令。 此指令只能在以下两种情况下使用:
安装未正确定义硬件 ID 的设备。 当硬件设备的硬件 ID 已损坏,或者当硬件供应商将相同的硬件 ID 分配给两个不同的设备(这是硬件设计中的错误)时,可能会发生这种情况。
为无法使用通用类安装程序或操作系统提供的驱动程序的设备安装驱动程序。
如果硬件 ID 或兼容 ID 与 InteractiveInstall 指令一起列出,安装程序会将与这些 ID 匹配的打印机安装推迟到客户端,因此安装会延迟到管理员登录。 系统会提示管理员安装正确的驱动程序文件。 如果两个打印机驱动程序共享相同的 设备 ID,但需要不同的驱动程序,这非常有用。
与 Windows 2000 及更高版本相比,Windows 95/98/Me 即插即用仅当存在 硬件 ID (排名 0)匹配时,才会安装设备,而无需用户干预。 如果即插即用设备的驱动程序有 兼容的 ID (排名 1)匹配,但没有硬件 ID 匹配,系统会提示用户从安装媒体中选择正确的驱动程序。 (这意味着用户必须具有安装介质才能安装驱动程序。
同样在 Windows 95/98/Me 上,当为多个设备(或针对多个总线上的类似设备)编写驱动程序时,除非每个可能的硬件 ID 都随 INF 文件中的重复驱动程序条目一起列出,否则用户始终会提示安装。
重复安装检测
当安装程序调用打印机类安装程序来安装打印机时,类安装程序将确定打印机是否已手动安装。 它通过搜索当前安装的打印机的驱动程序和端口名称,查看是否存在与 INF 文件中列出的完全匹配项来执行此功能。 如果类安装程序找到一个已安装的打印队列,其驱动程序和端口名称与这两个参数匹配,则它不会安装第二个打印队列,而是将其与 devnode 条目相关联。 这可以防止为同一设备创建第二个打印队列。
许多常用打印机型号共享相同的硬件 ID(例如 HP DeskJet 系列)。 在 Windows 95/98/Me 上,如果用户手动安装由即插即用检测到的 DeskJet 模型,则如果用户选择相应的驱动程序,则会安装第二个打印队列。 如果用户未选择驱动程序,则会在每次计算机重新启动时提示他们这样做。
Windows 2000 及更高版本通过列出硬件 ID 和 兼容 ID 匹配的所有打印机来避免此行为。 找到多个匹配项时,类安装程序会检查是否存在具有相同硬件 ID 匹配的打印队列。 如果有,即插即用管理器不会安装第二个队列。 否则,硬件 ID 匹配将降级为兼容的 ID 匹配。 如果这些硬件 ID 也列在 INF 文件的 InteractiveInstall 条目(请参阅 INF ControlFlags Section)中,系统会提示用户选择驱动程序。