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 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) |