更新驱动程序文件

每当发生以下情况之一时,驱动程序都会更新:

  • 硬件更新向导设备管理器运行。

    注意 从 Windows Vista 开始,此向导现在名为 “更新驱动程序软件向导”。

  • Windows 更新正在运行。

  • 运行设备的安装软件。

  • 从 Windows Vista 开始,可以从提升的命令提示符运行 PnPUtil 工具,以安装或更新设备的 驱动程序包

编写更新现有驱动程序的安装软件和 INF 文件时,请使用以下准则。

  • 安装软件可以调用 UpdateDriverForPlugAndPlayDevices(提供 INF 文件和硬件 ID)来更新与硬件 ID 匹配的设备驱动程序。

    从 Windows Vista 开始,安装软件还可以调用以下其中一项来更新驱动程序:

    • DiInstallDriver,用于预安装驱动程序,然后在驱动程序支持的系统中存在的设备上安装驱动程序。
    • DiInstallDevice,用于在系统中存在的指定设备上从驱动程序存储安装指定的驱动程序。

    有关详细信息,请参阅 编写设备安装应用程序

  • 升级驱动程序时,除非绝对必要,否则类安装程序和共同安装程序不应提供完成安装页面以响应 DIF_NEWDEVICEWIZARD_FINISHINSTALL 。 如果可能,请从之前安装的设置中获取完成安装信息。

  • 在可能的情况下,类安装程序和共同安装程序应避免基于他们是否提供初始安装或更新已安装设备的驱动程序的行为。

  • 从 Windows XP 开始,注册表值 CoInstallers32EnumPropPages32 在传递 DIF_REGISTER_COINSTALLERS之前被删除。 早期操作系统版本的 INF 文件必须显式删除这些值,或对其执行非修改操作。

  • 从 Windows XP 开始,注册表值 UpperFiltersLowerFilters交付DIF_INSTALLDEVICE之前被删除。 早期操作系统版本的 INF 文件必须显式删除这些值,或对其执行非修改操作。

  • 更新驱动程序时 ,请勿 使用 INF DelFiles 指令INF RenFiles 指令 。 Windows 无法保证特定文件不会被其他设备使用。 (类安装程序和共同安装程序可以删除或重命名文件, 前提是 他们可以可靠地确定没有设备正在使用文件。)

  • 如果不再需要这些条目,请使用 INF DelReg 指令 从设备的以前安装中删除特定于设备的旧注册表项。 (请勿删除全局注册表项。)

  • 请勿在 INF DDInstall.Services 部分中使用 INFDelService 指令从目标计算机中删除以前安装的设备/驱动程序服务。 Windows 无法保证特定服务不会被其他设备使用。 (类安装程序和共同安装程序可以删除服务( 如果他们 能够可靠地确定没有设备正在使用 services)。)

  • 更新类安装程序、类共同安装程序或服务 DLL 时,必须为新版本提供新的文件名。

有关 INF 文件的详细信息,请参阅 创建 INF 文件和INF 文件节和指令