打印机安装和即插即用管理器
即插即用管理器处理计算机的所有即插即用事件,并且对所有设备都是通用的。 即插即用管理器记录在 即插即用 中。 即插即用简介概述了即插即用安装,以及各种内核模式和用户模式组件如何交互。
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 匹配,系统会提示用户从安装媒体中选择正确的驱动程序。 (这意味着用户必须拥有安装介质才能安装 driver.)
此外,在 Windows 95/98/Me 上,如果为多个设备 (或多个总线) 上的类似设备编写驱动程序,则始终提示用户安装(如果仅列出兼容的 ID),除非在 INF 文件中列出了每个可能的硬件 ID 以及重复的驱动程序条目。
重复安装检测
当安装程序调用打印机类安装程序来安装打印机时,类安装程序将确定是否已手动安装打印机。 它通过查找当前安装的打印机的驱动程序和端口名称与 INF 文件中列出的打印机之间的完全匹配项来执行此操作。 如果类安装程序找到驱动程序和端口名称与这两个参数匹配的已安装打印队列,则不会安装第二个打印队列,而是将其与 devnode 条目相关联。 这可以防止为同一设备创建第二个打印队列。
许多常用的打印机型号 (HP DeskJet 系列共享相同的硬件 ID,例如) 。 在 Windows 95/98/Me 上,如果用户手动安装由即插即用随后检测到的 DeskJet 型号,如果用户选择适当的驱动程序,则会安装第二个打印队列。 如果用户未选择驱动程序,则每次计算机重新启动时,系统都会提示他们这样做。
Windows 2000 及更高版本通过列出 具有硬件 ID 和 兼容 ID 匹配的所有打印机来避免此行为。 找到多个匹配项时,类安装程序会检查是否已存在具有相同硬件 ID 匹配项的打印队列。 如果有,即插即用管理器不会安装第二个队列。 否则,硬件 ID 匹配将降级为兼容的 ID 匹配项。 如果这些硬件 ID 也列在 InteractiveInstall 条目 (请参阅 INF 文件的 INF ControlFlags 部分) ,系统会提示用户选择驱动程序。