Поделиться через


Функция SetupDiBuildDriverInfoList (setupapi.h)

Функция SetupDiBuildDriverInfoList создает список драйверов, связанных с определенным устройством или глобальным списком драйверов класса для набора сведений об устройствах.

Синтаксис

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

Параметры

[in] DeviceInfoSet

Дескриптор для набора сведений об устройстве , содержащий список драйверов, глобально для всех элементов сведений об устройстве или специально для одного элемента сведений об устройстве. Набор сведений об устройстве не должен содержать элементы сведений об удаленном устройстве.

[in, out] DeviceInfoData

Указатель на структуру SP_DEVINFO_DATA для элемента сведений об устройстве в DeviceInfoSet , представляющего устройство, для которого создается список драйверов. Этот параметр является необязательным и может иметь значение NULL. Если указан этот параметр, список связывается с указанным устройством. Если этот параметр имеет значение NULL, список связан со списком драйверов глобального класса для DeviceInfoSet.

Если класс этого устройства обновляется из-за создания списка совместимых драйверов DeviceInfoData.ClassGuid обновляется при возврате.

[in] DriverType

Тип списка драйверов для сборки. Необходимо установить одно из следующих значений.

Значение Значение
SPDIT_CLASSDRIVER
Создайте список драйверов класса. Если DeviceInfoData имеет значение NULL, необходимо указать этот тип списка драйверов.
SPDIT_COMPATDRIVER
Создайте список совместимых драйверов. DeviceInfoData не должен иметь значение NULL , если указан этот тип списка драйверов.

Возвращаемое значение

Функция возвращает ЗНАЧЕНИЕ TRUE , если оно выполнено успешно. В противном случае возвращается значение FALSE , а зарегистрированная ошибка может быть получена путем вызова Метода GetLastError.

Комментарии

Набор сведений об устройстве должен быть для локального компьютера, так как SetupDiBuildDriverInfoList ищет драйверы только на локальном компьютере. Если набор сведений об устройстве предназначен для удаленного компьютера, функция возвращает значение TRUE , но фактически не обновляет существующий список драйверов для набора сведений об устройствах или, если он указан, список драйверов для элемента сведений об устройстве.

Вызывающий объект может задать в SP_DEVINSTALL_PARAMSфлаги, связанные с набором сведений об устройстве или с конкретным устройством (DeviceInfoData), чтобы управлять сборкой списка. Например, вызывающий объект может задать флаг DI_FLAGSEX_ALLOWEXCLUDEDDRVS для включения драйверов, помеченных как "Исключить из выбора".

Драйвер имеет значение "Исключить из выбора", если он помечен как ExcludeFromSelect в INF-файле или это драйвер для устройства, весь класс установки которого помечен как NoInstallClass или NoUseClass в INF-файле установщика класса. Драйверы для устройств PnP обычно являются "Исключить из выбора"; Устройства PnP не следует устанавливать вручную. Чтобы создать список файлов драйверов для устройства PnP, вызывающий объект SetupDiBuildDriverInfoList должен установить этот флаг.

DriverPath в SP_DEVINSTALL_PARAMS содержит либо путь к каталогу с INF-файлами, либо путь к определенному INF-файлу. Если задано DI_ENUMSINGLEINF , DriverPath содержит путь к одному INF-файлу. Если DriverPath имеет значение NULL, эта функция создает список драйверов из расположения INF-файла по умолчанию : %SystemRoot%\inf.

После того как эта функция создала указанный список драйверов, вызывающий объект может перечислить его элементы, вызвав SetupDiEnumDriverInfo.

Если список драйверов связан с экземпляром устройства (то есть указан DeviceInfoData ), результирующий список состоит из драйверов, имеющих тот же класс, что и экземпляр устройства, с которым они связаны. Если это глобальный список драйверов классов (то есть DriverType является SPDIT_CLASSDRIVER а DeviceInfoData не указан), класс, используемый при создании списка, является классом, связанным с набором сведений об устройстве. Если набор сведений об устройстве не имеет связанного класса, при создании списка используются драйверы всех классов.

Другой поток может завершить создание списка драйверов путем вызова SetupDiCancelDriverInfoSearch.

DeviceInfoSet должен содержать только элементы на локальном компьютере. Эта функция ищет только локальные драйверы.

Требования

Требование Значение
Минимальная версия клиента Доступно в Microsoft Windows 2000 и более поздних версиях Windows.
Целевая платформа Персональный компьютер
Верхняя часть setupapi.h (включая Setupapi.h)
Библиотека Setupapi.lib
DLL Setupapi.dll
Набор API ext-ms-win-setupapi-classinstallers-l1-1-1 (представлено в Windows 8.1)

См. также раздел

SetupDiCancelDriverInfoSearch

SetupDiDeplastDriverInfoList

SetupDiEnumDriverInfo