Función SetupDiBuildDriverInfoList (setupapi.h)

La función SetupDiBuildDriverInfoList crea una lista de controladores asociados a un dispositivo específico o a la lista global de controladores de clase para un conjunto de información del dispositivo.

Sintaxis

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

Parámetros

[in] DeviceInfoSet

Identificador del conjunto de información del dispositivo que contiene la lista de controladores, ya sea globalmente para todos los elementos de información del dispositivo o específicamente para un único elemento de información del dispositivo. El conjunto de información del dispositivo no debe contener elementos de información de dispositivo remotos.

[in, out] DeviceInfoData

Puntero a una estructura de SP_DEVINFO_DATA para el elemento de información del dispositivo en DeviceInfoSet que representa el dispositivo para el que se va a crear una lista de controladores. Este parámetro es opcional y puede ser NULL. Si se especifica este parámetro, la lista está asociada al dispositivo especificado. Si este parámetro es NULL, la lista está asociada a la lista de controladores de clase global para DeviceInfoSet.

Si la clase de este dispositivo se actualiza debido a la creación de una lista de controladores compatible, DeviceInfoData.ClassGuid se actualiza al devolver.

[in] DriverType

Tipo de lista de controladores que se va a compilar. Debe ser uno de los siguientes valores:

Valor Significado
SPDIT_CLASSDRIVER
Cree una lista de controladores de clase. Si DeviceInfoData es NULL, se debe especificar este tipo de lista de controladores.
SPDIT_COMPATDRIVER
Cree una lista de controladores compatibles. DeviceInfoData no debe ser NULL si se especifica este tipo de lista de controladores.

Valor devuelto

La función devuelve TRUE si se realiza correctamente. De lo contrario, devuelve FALSE y el error registrado se puede recuperar mediante una llamada a GetLastError.

Comentarios

El conjunto de información del dispositivo debe ser para un equipo local porque SetupDiBuildDriverInfoList busca controladores solo en un equipo local. Si el conjunto de información del dispositivo es para un equipo remoto, la función devuelve TRUE pero no actualiza realmente la lista de controladores existente para el conjunto de información del dispositivo o, si se proporciona, la lista de controladores para el elemento de información del dispositivo.

El autor de la llamada puede establecer Marcas en el SP_DEVINSTALL_PARAMS que están asociados con el conjunto de información del dispositivo o con un dispositivo específico (DeviceInfoData) para controlar cómo se compila la lista. Por ejemplo, el autor de la llamada puede establecer la marca DI_FLAGSEX_ALLOWEXCLUDEDDRVS para incluir controladores marcados como Excluir de seleccionar.

Un controlador es "Excluir de seleccionar" si está marcado como ExcludeFromSelect en el archivo INF o es un controlador para un dispositivo cuya clase de instalación completa está marcada como NoInstallClass o NoUseClass en el archivo INF del instalador de clase. Los controladores para dispositivos PnP suelen ser "Excluir de select"; Los dispositivos PnP no deben instalarse manualmente. Para crear una lista de archivos de controlador para un dispositivo PnP, un autor de llamada de SetupDiBuildDriverInfoList debe establecer esta marca.

DriverPath del SP_DEVINSTALL_PARAMS contiene una ruta de acceso de un directorio que contiene archivos INF o una ruta de acceso de un archivo INF específico. Si se establece DI_ENUMSINGLEINF , DriverPath contiene una ruta de acceso de un único archivo INF. Si DriverPath es NULL, esta función compila la lista de controladores desde la ubicación predeterminada del archivo INF, %SystemRoot%\inf.

Una vez que esta función ha creado la lista de controladores especificada, el autor de la llamada puede enumerar los elementos de la lista llamando a SetupDiEnumDriverInfo.

Si la lista de controladores está asociada a una instancia de dispositivo (es decir, se especifica DeviceInfoData ), la lista resultante se compone de controladores que tienen la misma clase que la instancia de dispositivo con la que están asociadas. Si se trata de una lista global de controladores de clase (es decir, DriverType se SPDIT_CLASSDRIVER y DeviceInfoData no se especifica), la clase que se usa al compilar la lista es la clase asociada al conjunto de información del dispositivo. Si el conjunto de información del dispositivo no tiene ninguna clase asociada, se usan controladores de todas las clases al compilar la lista.

Otro subproceso puede finalizar la compilación de una lista de controladores mediante una llamada a SetupDiCancelDriverInfoSearch.

DeviceInfoSet solo debe contener elementos en el equipo local. Esta función solo busca controladores locales.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Microsoft Windows 2000 y versiones posteriores de Windows.
Plataforma de destino Escritorio
Encabezado setupapi.h (incluya Setupapi.h)
Library Setupapi.lib
Archivo DLL Setupapi.dll
Conjunto de API ext-ms-win-setupapi-classinstallers-l1-1-1 (introducido en Windows 8.1)

Consulte también

SetupDiCancelDriverInfoSearch

SetupDiDestroyDriverInfoList

SetupDiEnumDriverInfo