DIF_INSTALLDEVICE

DIF_INSTALLDEVICE 请求允许安装程序在安装设备之前和/或之后执行任务。

发送时间

选择驱动程序后,注册任何设备共同安装程序,并注册任何设备接口。

Who 句柄

类共同安装程序

可以处理

设备共同安装程序

可以处理

类安装程序

可以处理

安装程序输入

DeviceInfoSet
提供包含要安装的设备的 设备信息集 的句柄。

DeviceInfoData
在设备信息集中提供设备的 SP_DEVINFO_DATA 结构的指针。

设备安装参数
DeviceInfoData关联的设备安装参数 (SP_DEVINSTALL_PARAMS) 。

类安装参数

安装程序输出

设备安装参数
安装程序可以修改 DeviceInfoData的设备安装参数。 例如,安装程序可能会设置 DI_NEEDREBOOT 标志,或者它可能会设置 DI_DONOTCALLCONFIGMG 标志,以防止 Windows 通过其新安装的驱动程序和设置动态地使设备联机。

安装程序返回值

共同安装程序通常返回 NO_ERROR 或 ERROR_DI_POSTPROCESSING_REQUIRED。 共同安装程序也可能返回 Win32 错误代码。

如果类安装程序成功处理此请求,并且 SetupDiCallClassInstaller 随后应调用默认处理程序,则类安装程序将返回 ERROR_DI_DO_DEFAULT。

如果类安装程序成功处理此请求(包括直接调用默认处理程序),则类安装程序应返回 NO_ERROR 并且 SetupDiCallClassInstaller 将不会再次调用默认处理程序。

注意 类安装程序可以直接调用默认处理程序,但类安装程序永远不会尝试取代默认处理程序的操作。 有关调用默认的 DIF 代码处理程序的详细信息,请参阅 调用默认的 Dif 代码处理程序

如果类安装程序遇到错误,则安装程序应返回相应的 Win32 错误代码,并且 SetupDiCallClassInstaller 将不会随后调用默认处理程序。

默认的 DIF 代码处理程序

SetupDiInstallDevice

安装程序操作

在响应 DIF_INSTALLDEVICE 请求时,安装程序通常会在默认的处理程序安装设备之前执行任何最终安装操作。 例如,安装程序可以检查注册表中所列设备的筛选器驱动程序和筛选器驱动程序和筛选器驱动程序和筛选器的筛选器。

除非在设备安装参数中设置了 DI_NOFILECOPY 标志,否则处理此 DIF 请求的安装程序应复制设备所需的文件,如驱动程序文件和控制面板文件。

如果 DI_NOFILECOPY 标志清晰但设置了 DI_NOVCP 标志,则安装程序必须将任何文件操作排队到提供的文件队列中,但不得提交队列。

共同安装程序可以在其预处理过程中处理此 DIF 请求,还可以在其后处理传递中处理此请求。 在预处理过程中,共同安装程序将执行 Windows 加载驱动程序并启动设备之前必须发生的所有操作。

在其后处理过程中,除非设置了 DI_NEEDREBOOT 标志,否则设备将启动并运行。 如果设置此标志,Windows 无法动态使设备联机。

如果安装程序返回 Win32 错误代码,Windows 放弃安装。

如果 Windows 无法找到新设备的 INF 文件,它将发送 DIF_INSTALLDEVICE 尝试安装null 驱动程序。 (SetupDiInstallDevice的默认处理程序) 检查设备是支持raw 模式,还是) IoReportDetectedDevice (报告的非 PnP 设备,在后一种情况下,Windows 将为设备安装 null 驱动程序。

如果此尝试失败,Windows 将再次发送 DIF_INSTALLDEVICE,这一次会在SP_DEVINSTALL_PARAMS结构中设置 DI_FLAGSEX_SETFAILEDINSTALL 标志。 在这种情况下,默认处理程序只是在设备的 ConfigFlags 注册表值中设置 FAILEDINSTALL 标志。 如果设置了 DI_FLAGSEX_SETFAILEDINSTALL 标志,则类安装程序必须返回 NO_ERROR 或 ERROR_DI_DO_DEFAULT 并且共同安装程序必须返回 NO_ERROR。

有关 DIF 代码的详细信息,请参阅 处理 Dif 代码

调用默认处理程序 SetupDiInstallDevice

有关何时以及如何调用 SetupDiInstallDevice的常规信息,请参阅 调用默认的 DIF 代码处理程序

在极少数情况下,如果类安装程序必须在所有 SetupDiInstallDevice 操作(启动设备除外)之后执行操作,则类安装程序必须:

  1. 在调用 SetupDiInstallDevice之前,请执行必须完成的操作。

  2. 设置 SP_DEVINSTALL_PARAMS 中的 DI_DONOTCALLCONFIGMGR 标志。设备的标志 成员。 如果设置了此标志,则 SetupDiInstallDevice 将执行除启动设备之外的所有默认安装操作。

  3. 调用 SetupDiInstallDevice 以执行除启动设备之外的所有默认安装操作。

  4. 执行所有默认安装操作(启动设备除外)完成后必须执行的操作。

  5. 调用 SetupDiRestartDevices 启动设备。

  6. 如果类安装程序成功完成安装操作或在安装操作失败时返回 Win32 错误,则返回 NO_ERROR。

要求

版本

在 Microsoft Windows 2000 及更高版本的 Windows 中受支持。

标头

Setupapi.log (包含 Setupapi.log)

另请参阅

DIF_INSTALLDEVICEFILES

SetupDiInstallDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS