SetupDiBuildDriverInfoList-Funktion (setupapi.h)

Die SetupDiBuildDriverInfoList-Funktion erstellt eine Liste von Treibern, die einem bestimmten Gerät oder der globalen Klassentreiberliste für einen Geräteinformationssatz zugeordnet sind.

Syntax

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

Parameter

[in] DeviceInfoSet

Ein Handle für die Geräteinformationen , die die Treiberliste enthalten sollen, entweder global für alle Geräteinformationselemente oder speziell für ein einzelnes Geräteinformationselement. Der Geräteinformationssatz darf keine Remotegeräteinformationselemente enthalten.

[in, out] DeviceInfoData

Ein Zeiger auf eine SP_DEVINFO_DATA Struktur für das Geräteinformationselement in DeviceInfoSet , das das Gerät darstellt, für das eine Treiberliste erstellt werden soll. Dieser Parameter ist optional und kann NULL sein. Wenn dieser Parameter angegeben ist, wird die Liste dem angegebenen Gerät zugeordnet. Wenn dieser Parameter NULL ist, ist die Liste der globalen Klassentreiberliste für DeviceInfoSet zugeordnet.

Wenn die Klasse dieses Geräts aufgrund des Erstellens einer kompatiblen Treiberliste aktualisiert wird, DeviceInfoData.ClassGuid wird bei der Rückgabe aktualisiert.

[in] DriverType

Der Typ der zu erstellenden Treiberliste. Dies muss einer der folgenden Werte sein:

Wert Bedeutung
SPDIT_CLASSDRIVER
Erstellen Sie eine Liste mit Klassentreibern. Wenn DeviceInfoDataNULL ist, muss dieser Treiberlistentyp angegeben werden.
SPDIT_COMPATDRIVER
Erstellen Sie eine Liste kompatibler Treiber. DeviceInfoData darf nicht NULL sein, wenn dieser Treiberlistentyp angegeben ist.

Rückgabewert

Die Funktion gibt TRUE zurück, wenn sie erfolgreich ist. Andernfalls wird FALSE zurückgegeben, und der protokollierte Fehler kann durch einen Aufruf von GetLastError abgerufen werden.

Hinweise

Der Geräteinformationssatz sollte für einen lokalen Computer festgelegt werden, da SetupDiBuildDriverInfoList nur auf einem lokalen Computer nach Treibern sucht. Wenn der Geräteinformationssatz für einen Remotecomputer festgelegt ist, gibt die Funktion TRUE zurück, aktualisiert aber nicht tatsächlich die vorhandene Treiberliste für den Geräteinformationssatz oder, falls angegeben, die Treiberliste für das Geräteinformationselement.

Der Aufrufer kann Flags in der SP_DEVINSTALL_PARAMS festlegen, die dem Geräteinformationssatz oder einem bestimmten Gerät (DeviceInfoData) zugeordnet sind, um zu steuern, wie die Liste erstellt wird. Beispielsweise kann der Aufrufer das DI_FLAGSEX_ALLOWEXCLUDEDDRVS-Flag so festlegen, dass treiber enthalten sind, die als Ausschluss von Auswahl markiert sind.

Ein Treiber ist "Exclude From Select", wenn er entweder in der INF-Datei als ExcludeFromSelect markiert ist oder ein Treiber für ein Gerät ist, dessen gesamte Setupklasse in der INF-Datei des Klasseninstallationsprogramms als NoInstallClass oder NoUseClass gekennzeichnet ist. Treiber für PnP-Geräte sind in der Regel "Von Auswahl ausschließen". PnP-Geräte sollten nicht manuell installiert werden. Um eine Liste der Treiberdateien für ein PnP-Gerät zu erstellen, muss ein Aufrufer von SetupDiBuildDriverInfoList dieses Flag festlegen.

Der DriverPath im SP_DEVINSTALL_PARAMS enthält entweder einen Pfad eines Verzeichnisses, das INF-Dateien enthält, oder einen Pfad einer bestimmten INF-Datei. Wenn DI_ENUMSINGLEINF festgelegt ist, enthält DriverPath den Pfad einer einzelnen INF-Datei. Wenn DriverPathNULL ist, erstellt diese Funktion die Treiberliste aus dem Standardmäßigen INF-Dateispeicherort %SystemRoot%\inf.

Nachdem diese Funktion die angegebene Treiberliste erstellt hat, kann der Aufrufer die Elemente der Liste auflisten, indem er SetupDiEnumDriverInfo aufruft.

Wenn die Treiberliste einem Gerät instance zugeordnet ist (d. h. DeviceInfoData wird angegeben), besteht die resultierende Liste aus Treibern, die dieselbe Klasse wie das Gerät instance aufweisen, dem sie zugeordnet sind. Wenn es sich um eine globale Klassentreiberliste handelt (d. h. DriverType ist SPDIT_CLASSDRIVER und DeviceInfoData nicht angegeben), ist die Klasse, die beim Erstellen der Liste verwendet wird, die Klasse, die dem Geräteinformationssatz zugeordnet ist. Wenn der Geräteinformationssatz keine zugeordnete Klasse aufweist, werden beim Erstellen der Liste Treiber aller Klassen verwendet.

Ein anderer Thread kann die Erstellung einer Treiberliste durch einen Aufruf von SetupDiCancelDriverInfoSearch beenden.

DeviceInfoSet darf nur Elemente auf dem lokalen Computer enthalten. Diese Funktion sucht nur nach lokalen Treibern.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Microsoft Windows 2000 und höheren Versionen von Windows.
Zielplattform Desktop
Kopfzeile setupapi.h (einschließlich Setupapi.h)
Bibliothek Setupapi.lib
DLL Setupapi.dll
APIs ext-ms-win-setupapi-classinstallers-l1-1-1 (eingeführt in Windows 8.1)

Weitere Informationen

SetupDiCancelDriverInfoSearch

SetupDiDestroyDriverInfoList

SetupDiEnumDriverInfo