SetupDiBuildDriverInfoList, fonction (setupapi.h)

La fonction SetupDiBuildDriverInfoList génère une liste de pilotes associés à un appareil spécifique ou à la liste globale des pilotes de classe pour un jeu d’informations sur le périphérique.

Syntaxe

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

Paramètres

[in] DeviceInfoSet

Handle du jeu d’informations sur le périphérique pour contenir la liste des pilotes, soit globalement pour tous les éléments d’informations de périphérique, soit spécifiquement pour un seul élément d’informations sur le périphérique. Le jeu d’informations sur l’appareil ne doit pas contenir d’éléments d’informations d’appareil distants.

[in, out] DeviceInfoData

Pointeur vers une structure SP_DEVINFO_DATA pour l’élément d’informations sur l’appareil dans DeviceInfoSet qui représente l’appareil pour lequel créer une liste de pilotes. Ce paramètre est facultatif et peut être NULL. Si ce paramètre est spécifié, la liste est associée à l’appareil spécifié. Si ce paramètre a la valeur NULL, la liste est associée à la liste des pilotes de classe globale pour DeviceInfoSet.

Si la classe de cet appareil est mise à jour en raison de la création d’une liste de pilotes compatibles, DeviceInfoData.ClassGuid est mis à jour lors du retour.

[in] DriverType

Type de liste de pilotes à générer. Il doit s’agir de l’une des valeurs suivantes :

Valeur Signification
SPDIT_CLASSDRIVER
Créez une liste de pilotes de classe. Si DeviceInfoData a la valeur NULL, ce type de liste de pilotes doit être spécifié.
SPDIT_COMPATDRIVER
Créez une liste de pilotes compatibles. DeviceInfoData ne doit pas être NULL si ce type de liste de pilotes est spécifié.

Valeur retournée

La fonction retourne TRUE si elle réussit. Sinon, elle retourne FALSE et l’erreur journalisée peut être récupérée en effectuant un appel à GetLastError.

Remarques

L’ensemble d’informations de périphérique doit être destiné à un ordinateur local, car SetupDiBuildDriverInfoList recherche des pilotes uniquement sur un ordinateur local. Si l’ensemble d’informations sur le périphérique est destiné à un ordinateur distant, la fonction retourne TRUE , mais ne met pas réellement à jour la liste de pilotes existante pour l’ensemble d’informations sur le périphérique ou, si elle est fournie, la liste des pilotes pour l’élément d’informations sur le périphérique.

L’appelant peut définir des indicateurs dans le SP_DEVINSTALL_PARAMS associés à l’ensemble d’informations sur l’appareil ou à un appareil spécifique (DeviceInfoData) pour contrôler la façon dont la liste est générée. Par exemple, l’appelant peut définir l’indicateur DI_FLAGSEX_ALLOWEXCLUDEDDRVS pour inclure les pilotes marqués Exclure de la sélection.

Un pilote est « Exclure de la sélection » s’il est marqué ExcludeFromSelect dans le fichier INF ou s’il s’agit d’un pilote pour un appareil dont l’ensemble de la classe d’installation est marqué NoInstallClass ou NoUseClass dans le fichier INF du programme d’installation de classe. Les pilotes pour les appareils PnP sont généralement « Exclure de la sélection » ; Les appareils PnP ne doivent pas être installés manuellement. Pour générer une liste de fichiers de pilotes pour un appareil PnP, un appelant de SetupDiBuildDriverInfoList doit définir cet indicateur.

Le DriverPath dans le SP_DEVINSTALL_PARAMS contient soit le chemin d’un répertoire contenant des fichiers INF, soit le chemin d’accès d’un fichier INF spécifique. Si DI_ENUMSINGLEINF est défini, DriverPath contient un chemin d’accès d’un seul fichier INF. Si DriverPath a la valeur NULL, cette fonction génère la liste des pilotes à partir de l’emplacement du fichier INF par défaut, %SystemRoot%\inf.

Une fois que cette fonction a généré la liste des pilotes spécifiée, l’appelant peut énumérer les éléments de la liste en appelant SetupDiEnumDriverInfo.

Si la liste des pilotes est associée à un appareil instance (autrement dit, DeviceInfoData est spécifié), la liste résultante est composée de pilotes ayant la même classe que le instance de périphérique auquel ils sont associés. S’il s’agit d’une liste de pilotes de classe globale (c’est-à-dire que DriverType est SPDIT_CLASSDRIVER et que DeviceInfoData n’est pas spécifié), la classe utilisée lors de la création de la liste est la classe associée au jeu d’informations de périphérique. Si le jeu d’informations sur le périphérique n’a pas de classe associée, les pilotes de toutes les classes sont utilisés lors de la création de la liste.

Un autre thread peut arrêter la création d’une liste de pilotes par un appel à SetupDiCancelDriverInfoSearch.

DeviceInfoSet doit contenir uniquement des éléments sur l’ordinateur local. Cette fonction recherche uniquement les pilotes locaux.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Microsoft Windows 2000 et versions ultérieures de Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête setupapi.h (inclure Setupapi.h)
Bibliothèque Setupapi.lib
DLL Setupapi.dll
Ensemble d’API ext-ms-win-setupapi-classinstallers-l1-1-1 (introduit dans Windows 8.1)

Voir aussi

SetupDiCancelDriverInfoSearch

SetupDiDestroyDriverInfoList

SetupDiEnumDriverInfo