运行 Finish-Install 操作

注意

通用或移动驱动程序包不支持本部分所述的功能。 请参阅 使用通用 INF 文件

在 Windows 8 及更高版本的 Windows 中,完成安装操作不会在设备安装过程中自动运行。 使用包含完成安装操作的驱动程序安装设备时,完成安装操作不会自动运行。 相反,Windows 会在“通知”区域或 Windows 操作中心提示用户“完成设备软件的安装”。 安装设备软件需要管理员权限。 如果安装失败,软件必须提示用户重试安装。 仍可通过完成安装操作来安装驱动程序随附的支持软件,但不会自动安装。

在Windows 8之前,如果设备被标记为需要执行完成安装操作,则 Windows 最初会尝试通过在以下某个时间运行完成安装过程来完成安装操作:

  • 对于在 Windows 安装过程中安装的设备,管理员在 Windows 安装完成后首次登录到 Windows。

  • 对于在安装 Windows 后、核心设备安装操作完成后安装或重新安装的设备,如下所示:

    • 对于 设备的硬件优先安装 ,Windows 运行初始完成安装过程。 如果当前用户不是管理员,Windows 将首先提示用户在运行初始完成安装过程之前输入管理员的凭据。

    • 对于 设备的软件优先安装 ,Windows 在启动安装或重新安装的管理员的上下文中运行初始完成安装过程。

在Windows 8之前,如果完成安装操作的初始尝试成功,完成安装过程会将设备清除为标记为执行完成安装操作。 如果完成完成安装操作的初始尝试失败,则完成安装过程不会将设备清除标记为执行完成安装操作并退出。 随后,当设备仍标记为执行完成安装操作时,Windows 会反复尝试完成安装操作,方法是在枚举设备时运行新的完成安装过程,如下所示:

  • 当设备保持安装状态时,管理员下次登录时。

  • 如果管理员在设备管理器或安装程序的“操作”菜单上单击“扫描硬件更改”,请在管理员的上下文中调用CM_Reenumerate_DevNode

如果设备被标记为执行完成安装操作,则完成安装过程将调用 SetupDiCallClassInstaller 向设备的安装程序发送 DIF_FINISHINSTALL_ACTION 请求。

如果安装程序具有完成-安装操作,安装程序将执行完成-安装操作,并为 DIF_FINISHINSTALL_ACTION 请求返回相应的错误代码。 安装程序返回下表中的错误代码之一。

错误代码 含义

ERROR_DI_DO_DEFAULT

类安装程序:类安装程序已成功运行其完成安装操作,并请求 Windows 执行其默认处理。

如果类安装程序没有完成安装操作,或者完成安装操作失败且不应再次尝试,则类安装程序也会返回此错误代码。

设备或类共同安装程序:共同安装程序不返回此错误代码。

NO_ERROR

类安装程序:类安装程序已成功运行其完成安装操作。 Windows 不应执行其默认处理。

设备或类共同安装程序:共同安装程序已成功运行其完成安装操作,或者没有完成安装操作。

如果完成安装操作失败且不应再次尝试,共同安装程序也会返回此错误代码。

Microsoft Win32 错误

类安装程序、设备共同安装程序或类共同安装程序在处理完成安装操作时遇到错误,但应再次尝试处理完成安装操作。

通过返回 Win32 错误代码,安装程序指示 Windows 应在下次枚举设备时运行另一个完成安装过程以完成完成安装操作。 安装程序还应通知用户这种情况。