SetupDiBuildDriverInfoList 函数 (setupapi.h)

SetupDiBuildDriverInfoList 函数生成与特定设备关联的驱动程序列表,或与设备信息集的全局类驱动程序列表相关联。

语法

WINSETUPAPI BOOL SetupDiBuildDriverInfoList(
  [in]      HDEVINFO         DeviceInfoSet,
  [in, out] PSP_DEVINFO_DATA DeviceInfoData,
  [in]      DWORD            DriverType
);

参数

[in] DeviceInfoSet

设备信息设置为包含驱动程序列表的设备信息的句柄,可以是全局所有设备信息元素,也可以是专用于单个设备信息元素。 设备信息集不得包含远程设备信息元素。

[in, out] DeviceInfoData

指向 DeviceInfoSet 中设备信息元素的SP_DEVINFO_DATA结构的指针,该元素表示要为其生成驱动程序列表的设备。 此参数是可选的,可以为 NULL。 如果指定此参数,则列表与指定的设备相关联。 如果此参数为 NULL,则列表与 DeviceInfoSet 的全局类驱动程序列表相关联。

如果由于生成兼容的驱动程序列表而更新此设备的类,则 DeviceInfoData。返回时将更新 ClassGuid

[in] DriverType

要生成的驱动程序列表的类型。 必须是以下值之一:

含义
SPDIT_CLASSDRIVER
生成类驱动程序的列表。 如果 DeviceInfoDataNULL,则必须指定此驱动程序列表类型。
SPDIT_COMPATDRIVER
生成兼容驱动程序的列表。 如果指定了此驱动程序列表类型,则 DeviceInfoData 不得为 NULL

返回值

如果成功,该函数将返回 TRUE 。 否则,它将返回 FALSE ,并且可以通过调用 GetLastError 来检索记录的错误。

注解

设备信息集应针对本地计算机,因为 SetupDiBuildDriverInfoList 仅在本地计算机上搜索驱动程序。 如果设备信息集针对远程计算机,则函数返回 TRUE ,但实际上不会更新设备信息集的现有驱动程序列表,或者(如果提供)设备信息元素的驱动程序列表。

调用方可以在SP_DEVINSTALL_PARAMS中设置与设备信息集或与特定设备关联的标志, (DeviceInfoData) 来控制列表的生成方式。 例如,调用方可以设置 DI_FLAGSEX_ALLOWEXCLUDEDDRVS 标志,以包括标记为“从选择中排除”的驱动程序。

如果驱动程序在 INF 文件中标记为 ExcludeFromSelect ,或者它是整个安装类在类安装程序 INF 文件中标记为 NoInstallClassNoUseClass 的设备驱动程序,则为“从选择中排除”。 PnP 设备的驱动程序通常为“从选择中排除”;不应手动安装 PnP 设备。 若要为 PnP 设备生成驱动程序文件列表, SetupDiBuildDriverInfoList 的调用方必须设置此标志。

SP_DEVINSTALL_PARAMS中的 DriverPath 包含包含 INF 文件的目录路径或特定 INF 文件的路径。 如果设置了 DI_ENUMSINGLEINF则 DriverPath 包含单个 INF 文件的路径。 如果 DriverPathNULL,此函数将从默认 INF 文件位置 %SystemRoot%\inf 生成驱动程序列表。

此函数生成指定的驱动程序列表后,调用方可以通过调用 SetupDiEnumDriverInfo 来枚举列表的元素。

如果驱动程序列表与设备实例关联, (即) 指定 DeviceInfoData ,则生成的列表由与它们关联的设备实例具有相同类的驱动程序组成。 如果这是全局类驱动程序列表 (即 DriverType SPDIT_CLASSDRIVER且未) 指定 DeviceInfoData,则生成列表时使用的类是与设备信息集关联的类。 如果设备信息集没有关联的类,则生成列表时将使用所有类的驱动程序。

另一个线程可以通过调用 SetupDiCancelDriverInfoSearch 来终止驱动程序列表的生成。

DeviceInfoSet 只能包含本地计算机上的元素。 此函数仅搜索本地驱动程序。

要求

要求
最低受支持的客户端 在 Microsoft Windows 2000 及更高版本的 Windows 中可用。
目标平台 桌面
标头 setupapi.h (包括 Setupapi.h)
Library Setupapi.lib
DLL Setupapi.dll
API 集 在 Windows 8.1) 中引入的 ext-ms-win-setupapi-classinstallers-l1-1-1 (

另请参阅

SetupDiCancelDriverInfoSearch

SetupDiDestroyDriverInfoList

SetupDiEnumDriverInfo