SP_DEVINSTALL_PARAMS_W Struktur (setupapi.h)
Eine SP_DEVINSTALL_PARAMS Struktur enthält Geräteinstallationsparameter, die einem bestimmten Geräteinformationselement zugeordnet sind oder global einem Geräteinformationssatz zugeordnet sind.
Syntax
typedef struct _SP_DEVINSTALL_PARAMS_W {
DWORD cbSize;
DWORD Flags;
DWORD FlagsEx;
HWND hwndParent;
PSP_FILE_CALLBACK InstallMsgHandler;
PVOID InstallMsgHandlerContext;
HSPFILEQ FileQueue;
ULONG_PTR ClassInstallReserved;
DWORD Reserved;
WCHAR DriverPath[MAX_PATH];
} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
Angehörige
cbSize
Die Größe der SP_DEVINSTALL_PARAMS Struktur in Byte.
Flags
Flags, die Installations- und Benutzeroberflächenvorgänge steuern. Einige Flags können vor dem Senden der Geräteinstallationsanforderung festgelegt werden, während andere Flags während der Verarbeitung einiger Anforderungen automatisch festgelegt werden. Flags kann eine Kombination der folgenden Werte sein.
Die Kennzeichenwerte werden in Gruppen aufgeführt: schreibbar durch Geräteinstallationsanwendungen und Installationsprogramme, schreibgeschützt (nur vom Betriebssystem festgelegt), reserviert und veraltet. Die erste Gruppe listet Flags auf, die schreibbar sind:
DI_CLASSINSTALLPARAMS
Legen Sie fest, dass die Parameter "Class Install" verwendet werden. SetupDiSetClassInstallParams legt dieses Flag fest, wenn der Aufrufer Parameter angibt und das Flag löscht, wenn der Aufrufer einen NULL- Parameterzeiger angibt.
DI_COMPAT_FROM_CLASS
Legen Sie fest, SetupDiBuildDriverInfoList- erzwingen, um die Liste der kompatiblen Treiber eines Geräts aus der Klassentreiberliste anstelle der INF-Datei zu erstellen.
DI_DRIVERPAGE_ADDED
Wird von einem Klasseninstallationsprogramm oder einem Co-Installer festgelegt, wenn das Installationsprogramm eine Seite bereitstellt, die die vom System bereitgestellte Treibereigenschaftenseite ersetzt. Wenn dieses Kennzeichen festgelegt ist, zeigt das Betriebssystem nicht die vom System bereitgestellte Treiberseite an.
DI_DONOTCALLCONFIGMG
Legen Sie fest, ob der Konfigurations-Manager nicht aufgerufen werden soll, um Geräte während der Ausführung bestimmter Geräteinstallationsfunktionen zu entfernen oder erneut auflisten (z. B. SetupDiInstallDevice).
Wenn dieses Kennzeichen festgelegt ist, dürfen Geräteinstallationsanwendungen, Klasseninstallationsprogramme und Co-Installer nicht die folgenden Funktionen aufrufen:
CM_Reenumerate_DevNodeCM_Reenumerate_DevNode_ExCM_Query_And_Remove_SubTreeCM_Query_And_Remove_SubTree_ExCM_Setup_DevNodeCM_Setup_DevNode_ExCM_Set_HW_Prof_FlagsCM_Set_HW_Prof_Flags_ExCM_Enable_DevNodeCM_Enable_DevNode_ExCM_Disable_DevNodeCM_Disable_DevNode_Ex
DI_ENUMSINGLEINF
Legen Sie fest, ob Installationsprogramme und andere Komponenten der Geräteinstallation nur die in SP_DEVINSTALL_PARAMS angegebene INF-Datei durchsuchen sollten.DriverPath-. Wenn dieses Flag festgelegt ist, enthält DriverPath- den Pfad einer einzelnen INF-Datei anstelle eines Pfads eines Verzeichnisses.
DI_INF_IS_SORTED
Legen Sie fest, dass die Seite "Gerät auswählen" Treiber in der Reihenfolge auflisten soll, in der sie in der INF-Datei angezeigt werden, anstatt sie alphabetisch zu sortieren.
DI_INSTALLDISABLED
Legen Sie fest, ob das Gerät standardmäßig in einem deaktivierten Zustand installiert werden soll. Um erkannt zu werden, muss dieses Flag festgelegt werden, bevor Windows den Standardhandler für die DIF_INSTALLDEVICE-Anforderung aufruft.
DI_NEEDREBOOT
Bei NT-basierten Betriebssystemen wird dieses Kennzeichen festgelegt, wenn das Gerät erfordert, dass der Computer nach der Geräteinstallation neu gestartet wird oder ein Gerätestatus geändert wird. Ein Klasseninstallationsprogramm oder ein Co-Installer kann dieses Kennzeichen jederzeit während der Geräteinstallation festlegen, wenn das Installationsprogramm feststellt, dass ein Neustart erforderlich ist.
DI_NEEDRESTART
Identisch mit DI_NEEDREBOOT.
DI_NOBROWSE
Festlegen, dass das Browsen deaktiviert wird, wenn der Benutzer einen OEM-Datenträgerpfad auswählt. Eine Geräteinstallationsanwendung legt dieses Kennzeichen fest, um einen Benutzer auf die Installation vom Installationsmedienspeicherort zu beschränken.
DI_NODI_DEFAULTACTION
Legen Sie fest, ob SetupDiCallClassInstaller keine Standardaktion ausführen sollte, wenn das Klasseninstallationsprogramm ERR_DI_DO_DEFAULT zurückgibt oder kein Klasseninstallationsprogramm vorhanden ist.
DI_NOFILECOPY
Legen Sie fest, ob Geräteinstallationsanwendungen und -komponenten, z. B. SetupDiInstallDevice, das Kopieren von Dateien überspringen sollten.
DI_NOVCP
Legen Sie diese Einstellung fest, um die Erstellung einer neuen Kopierwarteschlange zu deaktivieren. Verwenden Sie die vom Anrufer bereitgestellte Kopierwarteschlange in SP_DEVINSTALL_PARAMS.FileQueue.
DI_NOWRITE_IDS
Legen Sie fest, dass SetupDiInstallDevice die inF angegebenen Hardware-IDs und kompatible IDs in die Geräteeigenschaften für den Geräteknoten schreiben (devnode). Dieses Flag sollte nur für aufgezählte Stammgeräte festgelegt werden.
Mit dieser Kennzeichnung wird das DI_FLAGSEX_ALWAYSWRITEIDS Flag außer Kraft gesetzt.
DI_PROPERTIES_CHANGE
Legen Sie vom Geräte-Manager fest, ob die Eigenschaften eines Geräts geändert wurden, was eine Aktualisierung der Benutzeroberfläche des Installers erfordert.
DI_QUIETINSTALL
Legen Sie fest, ob die Funktionen des Geräteinstallationsprogramms automatisch ausgeführt werden müssen, und verwenden Sie nach Möglichkeit Standardoptionen. Klasseninstallationsprogramme und Co-Installer dürfen keine Benutzeroberfläche anzeigen, wenn dieses Flag festgelegt ist.
DI_RESOURCEPAGE_ADDED
Wird von einem Klasseninstallationsprogramm oder einem Co-Installer festgelegt, wenn das Installationsprogramm eine Seite bereitstellt, die die vom System bereitgestellte Ressourceneigenschaftenseite ersetzt. Wenn dieses Flag festgelegt ist, zeigt das Betriebssystem nicht die vom System bereitgestellte Ressourcenseite an.
DI_SHOWOEM
Legen Sie fest, dass die Unterstützung für OEM-Datenträger zulässig ist. Wenn dieses Kennzeichen festgelegt ist, zeigt das Betriebssystem auf der Seite "Gerät auswählen" die Schaltfläche "Datenträger verwenden" an. Dieses Kennzeichen ist standardmäßig in vom System bereitgestellten Assistenten festgelegt.
DI_USECI_SELECTSTRINGS
Legen Sie fest, ob ein Klasseninstallationsprogramm oder ein Co-Installer Zeichenfolgen bereitgestellt hat, die während SetupDiSelectDevice-verwendet werden sollen.
Die folgenden Flags sind schreibgeschützt (nur vom Betriebssystem festgelegt):
DI_DIDCLASS
Legen Sie fest, ob SetupDiBuildDriverInfoList bereits eine Liste der Treiber für diese Geräteklasse erstellt hat. Wenn diese Liste bereits erstellt wurde, enthält sie alle Treiberinformationen, und dieses Flag wird immer festgelegt. SetupDiDestroyDriverInfoList diese Kennzeichnung löscht, wenn eine Liste von Treibern für eine Klasse gelöscht wird.
Dieses Kennzeichen ist schreibgeschützt. Nur das Betriebssystem legt dieses Kennzeichen fest.
DI_DIDCOMPAT
Legen Sie fest, ob SetupDiBuildDriverInfoList bereits eine Liste der kompatiblen Treiber für dieses Gerät erstellt hat. Wenn diese Liste bereits erstellt wurde, enthält sie alle Treiberinformationen, und dieses Flag wird immer festgelegt. SetupDiDestroyDriverInfoList dieses Kennzeichen gelöscht, wenn eine kompatible Treiberliste gelöscht wird.
Dieses Kennzeichen wird nur in Geräteinstallationsparametern festgelegt, die einem bestimmten Geräteinformationselement zugeordnet sind, nicht in Parametern für eine Geräteinformationen, die als Ganzes festgelegt sind.
Dieses Kennzeichen ist schreibgeschützt. Nur das Betriebssystem legt dieses Kennzeichen fest.
DI_MULTMFGS
Wird von SetupDiBuildDriverInfoList festgelegt, wenn eine Liste der Treiber für eine Gerätesetupklasse Treiber enthält, die von mehreren Herstellern bereitgestellt werden.
Dieses Kennzeichen ist schreibgeschützt. Nur das Betriebssystem legt dieses Kennzeichen fest.
Die folgenden Flags sind reserviert:
DI_AUTOASSIGNRES
DI_DISABLED
DI_FORCECOPY
DI_GENERALPAGE_ADDED
DI_OVERRIDE_INFFLAGS
DI_SHOWALL
DI_SHOWCLASS
DI_SHOWCOMPAT
Die folgenden Flags sind veraltet:
DI_NOSELECTICONS
DI_PROPS_NOCHANGEUSAGE
FlagsEx
Zusätzliche Flags, die die Kontrolle über Installations- und Benutzeroberflächenvorgänge bieten. Einige Flags können vor dem Aufrufen der Geräteinstallationsfunktionen festgelegt werden, während andere Flags während der Verarbeitung einiger Funktionen automatisch festgelegt werden. FlagsEx- kann eine Kombination der folgenden Werte sein.
Die Flagwerte werden in Gruppen aufgeführt: schreibbar durch Geräteinstallationsanwendungen und Installationsprogramme, schreibgeschützt (nur vom Betriebssystem festgelegt), reserviert und veraltet.
Die erste Gruppe listet Flags auf, die schreibbar sind:
DI_FLAGSEX_ALLOWEXCLUDEDDRVS
Wenn festgelegt, schließen Sie Treiber ein, die als "Von Auswahl ausschließen" gekennzeichnet wurden.
Wenn dieses Flag beispielsweise festgelegt ist, zeigt SetupDiSelectDevice Treiber an, die den Status "Von Auswahl ausschließen" aufweisen und SetupDiBuildDriverInfoList "Von Auswahl ausschließen"-Treiber in der angeforderten Treiberliste enthält.
Ein Treiber ist "Von Auswahl ausschließen", wenn er entweder ExcludeFromSelect- in der INF-Datei markiert ist oder es ein Treiber für ein Gerät ist, dessen gesamte Setupklasse NoInstallClass oder NoUseClass im Klasseninstallationsprogramm INF markiert 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.
DI_FLAGSEX_ALWAYSWRITEIDS
Wenn festgelegt und das flag DI_NOWRITE_IDS klar ist, schreiben Sie immer Hardware- und kompatible IDs in die Geräteeigenschaften für die Devnode. Dieses Flag sollte nur für aufgezählte Stammgeräte festgelegt werden.
DI_FLAGSEX_APPENDDRIVERLIST
Wenn festgelegt, fügt SetupDiBuildDriverInfoList eine neue Treiberliste an eine vorhandene Liste an. Dieses Kennzeichen ist beim Durchsuchen mehrerer Speicherorte relevant.
DI_FLAGSEX_DRIVERLIST_FROM_URL
Falls festgelegt, erstellen Sie die Treiberliste aus INF(n), die von der URL abgerufen wurde, die in SP_DEVINSTALL_PARAMS angegeben ist.DriverPath. Wenn der DriverPath- eine leere Zeichenfolge ist, verwenden Sie die Windows Update-Website.
Derzeit unterstützt das Betriebssystem keine URLs. Verwenden Sie dieses Kennzeichen, um SetupDiBuildDriverInfoList- zum Durchsuchen der Windows Update-Website zu leiten.
Legen Sie dieses Kennzeichen nicht fest, wenn DI_QUIETINSTALL festgelegt ist.
DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS
Wenn festgelegt, schließen Sie beim Erstellen einer Treiberliste keine alten Internettreiber ein. Dieses Kennzeichen sollte jedes Mal festgelegt werden, wenn Sie eine Liste potenzieller Treiber für ein Gerät erstellen. Sie können dieses Kennzeichen löschen, wenn Sie nur eine Liste der Treiber erhalten, die derzeit für ein Gerät installiert sind.
DI_FLAGSEX_FILTERCLASSES
Bei Festlegung wird SetupDiBuildClassInfoList- auf Klasseneinschlussfilter überprüft. Dies bedeutet, dass ein Gerät nicht in der Klassenliste enthalten ist, wenn seine Klasse als NoInstallClass markiert ist.
DI_FLAGSEX_FILTERSIMILARDRIVERS
(Windows XP und höher.) Bei Festlegung enthält SetupDiBuildDriverInfoList beim Erstellen einer Klassentreiberliste "ähnliche" Treiber. Ein "ähnlicher" Treiber ist einer, für den eine der Hardware-IDs oder kompatiblen IDs in der INF-Datei teilweise (oder vollständig) mit einer der Hardware-IDs oder kompatiblen IDs der Hardware übereinstimmt.
DI_FLAGSEX_FINISHINSTALL_ACTION
(Windows Vista und höher.) Weitere Informationen finden Sie unter Markieren eines Geräts als Finish-Install Aktion zum Ausführen von.
DI_FLAGSEX_INET_DRIVER
Bei Festlegung wurde der Treiber aus dem Internet abgerufen. Windows verwendet die INF des Geräts nicht, um zukünftige Geräte zu installieren, da Windows nicht garantieren kann, dass die Treiberdateien erneut aus dem Internet abgerufen werden können.
DI_FLAGSEX_INSTALLEDDRIVER
(Windows XP und höher.) Wenn festgelegt, enthält SetupDiBuildDriverInfoList- nur den derzeit installierten Treiber beim Erstellen einer Liste von Klassentreibern oder gerätekompatiblen Treibern.
DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE
(Windows XP und höher.) Wenn festgelegt, führt SetupDiBuildDriverInfoList- beim Erstellen einer Liste von Klassentreibern keine Knoten in der Treiberliste zusammen, die aus demselben INF stammen und dieselbe Treiberbeschreibung und denselben Rang aufweisen.
DI_FLAGSEX_NO_DRVREG_MODIFY
Verarbeiten Sie nicht die AddReg- und DelReg Einträge für die Hardware- und Softwaretasten (Treiber) des Geräts. Das heißt, die AddReg und DelReg Einträge in der INF-Datei DDInstall und DDInstall. HW- Abschnitte.
DI_FLAGSEX_POWERPAGE_ADDED
Wenn festgelegt, hat ein Installationsprogramm eine eigene Seite für das Dialogfeld "Energieeigenschaften" hinzugefügt. Das Betriebssystem zeigt die vom System bereitgestellte Energieeigenschaftenseite nicht an.The operating system will not display the system-supplied power properties page. Dieses Kennzeichen ist nur relevant, wenn das Gerät die Energieverwaltung unterstützt.
DI_FLAGSEX_PROPCHANGE_PENDING
Bei Festlegung hat der Benutzer Änderungen an einem oder mehreren Geräteeigenschaftenblättern vorgenommen. Der Eigenschaftenseitenanbieter legt dieses Flag in der Regel fest.
Wenn der Benutzer das Geräteeigenschaftenblatt schließt, überprüft der Geräte-Manager das DI_FLAGSEX_PROPCHANGE_PENDING Flag. Wenn sie festgelegt ist, löscht der Geräte-Manager dieses Flag, legt das DI_PROPERTIES_CHANGE-Flag fest und sendet eine DIF_PROPERTYCHANGE Anforderung an die Installationsprogramme, um sie darüber zu informieren, dass etwas geändert wurde.
DI_FLAGSEX_RECURSIVESEARCH
(Windows Vista und höher.) Wenn SetupDiBuildDriverInfoList in dem im DriverPath--Wert angegebenen Pfad nach INFs sucht, wird die Suche rekursiv sein.
DI_FLAGSEX_SEARCH_PUBLISHED_INFS
(Windows Vista und höher.) Wenn festgelegt, wenn SetupDiBuildDriverInfoList verwendet wird, um nach INFs ohne inF-Pfad oder Suchpfad zu suchen, schränkt die Suche auf nur INFs ein, die in den Treiberspeicher importiert wurden.
DI_FLAGSEX_SETFAILEDINSTALL
Legen Sie fest, ob die Installation fehlgeschlagen ist. Wenn dieses Flag festgelegt ist, legt die SetupDiInstallDevice--Funktion einfach das FAILEDINSTALL-Flag im ConfigFlags Registrierungswert des Geräts fest. Wenn DI_FLAGSEX_SETFAILEDINSTALL festgelegt ist, müssen Co-Installer als Reaktion auf DIF_INSTALLDEVICE NO_ERROR zurückgeben, während Klasseninstallationsprogramme NO_ERROR oder ERROR_DI_DO_DEFAULT zurückgeben müssen.
DI_FLAGSEX_USECLASSFORCOMPAT
Filtern Sie INF-Dateien auf der Setupklasse des Geräts, wenn Sie eine Liste kompatibler Treiber erstellen. Wenn die Setupklasse eines Geräts bekannt ist, verringert das Festlegen dieses Flags die Zeit, die zum Erstellen einer Liste kompatibler Treiber beim Durchsuchen von INF-Dateien erforderlich ist, die nicht vorkompiliert sind. Dieses Kennzeichen wird ignoriert, wenn DI_COMPAT_FROM_CLASS festgelegt ist.
Die folgenden Flags sind schreibgeschützt; nur das Betriebssystem legt diese Flags fest:
DI_FLAGSEX_CI_FAILED
Wird vom Betriebssystem festgelegt, wenn ein Klasseninstallationsprogramm nicht geladen oder gestartet werden konnte. Dieses Kennzeichen ist schreibgeschützt.
DI_FLAGSEX_DIDCOMPATINFO
Windows hat eine Liste der Treiberknoten erstellt, die mit dem Gerät kompatibel sind. Dieses Kennzeichen ist schreibgeschützt.
DI_FLAGSEX_DIDINFOLIST
Windows hat eine Liste von Treiberknoten erstellt, die alle Treiber enthält, die in den INF-Dateien der angegebenen Setupklasse aufgeführt sind. Wenn die angegebene Setupklasse NULL- ist, da der HDEVINFO-Satz oder das Gerät keine zugeordnete Klasse aufweist, enthält die Liste alle Treiberknoten aus allen verfügbaren INF-Dateien. Dieses Kennzeichen ist schreibgeschützt.
DI_FLAGSEX_IN_SYSTEM_SETUP
Falls festgelegt, erfolgt die Installation während des anfänglichen Systemsetups. Dieses Kennzeichen ist schreibgeschützt.
Die folgenden Flags sind reserviert und sollten nicht verwendet werden:
DI_FLAGSEX_ALTPLATFORM_DRVSEARCH
DI_FLAGSEX_BACKUPONREPLACE
DI_FLAGSEX_DEVICECHANGE
DI_FLAGSEX_OLDINF_IN_CLASSLIST
DI_FLAGSEX_PREINSTALLBACKUP
DI_FLAGSEX_RESTART_DEVICE_ONLY
DI_FLAGSEX_USEOLDINFSEARCH
Die folgenden Flags sind veraltet:
DI_FLAGSEX_AUTOSELECTRANK0
DI_FLAGSEX_NOUIONQUERYREMOVE
hwndParent
Fensterhandle, das die Benutzeroberflächendialoge im Zusammenhang mit diesem Gerät besitzt.
InstallMsgHandler
Rückruf, der beim Kopieren von Dateien zum Behandeln von Ereignissen verwendet wird. Ein Installationsprogramm kann z. B. einen Rückruf verwenden, um eine spezielle Verarbeitung durchzuführen, wenn ein Commit für eine Dateiwarteschlange ausgeführt wird.
InstallMsgHandlerContext
Private Daten, die vom InstallMsgHandler Rückruf verwendet werden.
FileQueue
Ein Handle für eine vom Aufrufer bereitgestellte Dateiwarteschlange, bei der Dateivorgänge in die Warteschlange gestellt werden sollen, aber nicht zugesichert werden sollen.
Wenn Sie einer Dateiwarteschlange einen Geräteinformationssatz (SetupDiSetDeviceInstallParams) zuordnen, müssen Sie die Warteschlange vor dem Löschen des Geräteinformationssatzes aufheben. Wenn Sie die Zuordnung der Dateiwarteschlange nicht aufheben, kann Windows die Referenzanzahl für den Geräteinformationssatz nicht erhöhen und den Arbeitsspeicher nicht freigeben.
Diese Warteschlange wird nur verwendet, wenn das flag DI_NOVCP festgelegt ist und angibt, dass Dateivorgänge enqueued, aber nicht zugesichert werden sollen.
ClassInstallReserved
Ein Zeiger für Klasseninstallationsdaten. Co-Installer dürfen dieses Feld nicht verwenden.
Reserved
Reserviert. Nur für die interne Verwendung.
DriverPath[MAX_PATH]
Dieser Pfad wird von der funktion SetupDiBuildDriverInfoList verwendet.
Bemerkungen
Anmerkung
Der header setupapi.h definiert SP_DEVINSTALL_PARAMS als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
Header- | setupapi.h (include Setupapi.h) |