DIF_SELECTBESTCOMPATDRV

注意

Windows 10版本 1703 (Redstone 2) 中已弃用此请求。 在较新版本的 Windows 中,不再调用此回调。

DIF_SELECTBESTCOMPATDRV请求允许安装程序从设备信息元素的兼容驱动程序列表中选择最佳驱动程序。

发送时间

当操作系统准备安装新的 PnP 设备或在 PnP 设备上执行更改驱动程序操作时。

此 DIF 请求通常在 PnP 配置期间使用。 如果手动安装设备,Windows 会发送 DIF_SELECTDEVICE 请求。

谁处理

类辅助安装程序

可以处理

设备辅助安装程序

不处理

类安装程序

可以处理

安装程序输入

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

DeviceInfoData
提供指向 SP_DEVINFO_DATA 结构的指针,该结构标识设备信息集中的设备。

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

类安装参数

安装程序输出

设备安装参数
安装程序可以修改设备安装参数。 但是,在处理此 DIF 请求时,它们通常不会这样做。

DeviceInfoData
副作用是,安装程序可以修改与 DeviceInfoData 关联的驱动程序列表,尤其是SP_DRVINSTALL_PARAMS。

安装程序返回值

辅助安装程序可以返回NO_ERROR、ERROR_DI_POSTPROCESSING_REQUIRED或 Win32 错误代码。

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

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

注意 类安装程序可以直接调用默认处理程序,但类安装程序绝不应尝试取代默认处理程序的操作。

有关调用默认处理程序的详细信息,请参阅 调用默认 DIF 代码处理程序

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

默认 DIF 代码处理程序

SetupDiSelectBestCompatDrv

安装程序操作

安装程序处理此 DIF 请求,以参与为 PnP 设备选择驱动程序。 安装程序通常通过以下方式之一响应此 DIF 请求:

  • 不执行任何操作。

    如果安装程序没有特殊的选择要求,则不会响应此 DIF 请求。 类安装程序返回ERROR_DI_DO_DEFAULT,辅助安装程序返回NO_ERROR。

  • 修改驱动程序列表中的一个或多个驱动程序的参数。

    例如,安装程序可能会通过将驱动程序标记为DNF_BAD_DRIVER来将其从设备的考虑范围中删除。 安装程序通过以下步骤修改驱动程序参数:

    1. 通过调用 SetupDiEnumDriverInfoSetupDiGetDriverInstallParams 获取有关列表中第一个驱动程序的信息。 如果适用,请通过调用 SetupDiSetDriverInstallParams 修改驱动程序参数并应用更改。

      如果驱动程序是最坏情况的选择,请在驱动程序安装参数中将驱动程序的排名设置为0xFFFF或更高。 有关详细信息 ,请参阅 Windows 如何选择驱动程序

    2. 重复上一步,直到处理完列表中的所有驱动程序。 请确保将 MemberIndex 参数递增为 SetupDiEnumDriverInfo ,如该函数的参考页中所述。

    类安装程序修改驱动程序列表后,它将返回ERROR_DI_DO_DEFAULT。 如果辅助安装程序修改驱动程序列表,它应在预处理中执行此操作,并返回NO_ERROR。

  • 为设备选择最佳驱动程序。

    此操作不太常见,但安装程序可能会为设备选择最佳驱动程序。 此类安装程序将检查每个驱动程序的数据,选择驱动程序,并调用 SetupDiSetSelectedDriver 来设置驱动程序。 安装程序设置所选驱动程序后,将返回NO_ERROR。

    如果辅助安装程序选择驱动程序,则应在后处理中执行此操作。

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

要求

版本

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

标头

Setupapi.h (包括 Setupapi.h)

另请参阅

SetupDiSelectBestCompatDrv

SetupDiSetSelectedDriver

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS