DIF_INSTALLDEVICE

Eine DIF_INSTALLDEVICE-Anforderung ermöglicht es einem Installationsprogramm, Aufgaben vor und/oder nach der Installation des Geräts auszuführen.

Sendebedingungen

Nachdem Sie den Treiber ausgewählt haben, alle Geräte-Co-Installer registrieren und alle Geräteschnittstellen registrieren.

Wer behandelt

Klassen-Co-Installer

Kann verarbeiten

Geräte-Co-Installer

Kann verarbeiten

Klasseninstallationsprogramm

Kann verarbeiten

Eingabe des Installationsprogramms

DeviceInfoSet
Stellt ein Handle für den Geräteinformationssatz bereit , der das zu installierende Gerät enthält.

DeviceInfoData
Stellt einen Zeiger auf eine SP_DEVINFO_DATA-Struktur für das Gerät im Geräteinformationssatz bereit.

Geräteinstallationsparameter
DeviceInfoData sind Geräteinstallationsparameter (SP_DEVINSTALL_PARAMS) zugeordnet.

Klasseninstallationsparameter
Keine

Installationsprogrammausgabe

Geräteinstallationsparameter
Ein Installationsprogramm kann die Geräteinstallationsparameter für DeviceInfoData ändern. Beispielsweise kann ein Installationsprogramm das DI_NEEDREBOOT-Flag festlegen oder das DI_DONOTCALLCONFIGMG-Flag festlegen, um zu verhindern, dass Windows das Gerät dynamisch mit dem neu installierten Treiber und den Einstellungen online schalten kann.

Rückgabewert des Installers

Ein Co-Installer gibt in der Regel NO_ERROR oder ERROR_DI_POSTPROCESSING_REQUIRED zurück. Ein Co-Installer gibt möglicherweise auch einen Win32-Fehlercode zurück.

Wenn ein Klasseninstallationsprogramm diese Anforderung erfolgreich verarbeitet und SetupDiCallClassInstaller anschließend den Standardhandler aufrufen sollte, gibt das Klasseninstallationsprogramm ERROR_DI_DO_DEFAULT zurück.

Wenn der Klasseninstaller diese Anforderung erfolgreich verarbeitet, einschließlich des direkten Aufrufs des Standardhandlers, sollte der Klasseninstaller NO_ERROR zurückgeben, und SetupDiCallClassInstaller ruft den Standardhandler anschließend nicht mehr auf.

Hinweis Der Klasseninstaller kann den Standardhandler direkt aufrufen, aber der Klasseninstaller sollte niemals versuchen, die Vorgänge des Standardhandlers abzulösen. Weitere Informationen zum Aufrufen eines DIF-Standardcodehandlers finden Sie unter Aufrufen von DIF-Standardcodehandlern.

Wenn beim Klasseninstallationsprogramm ein Fehler auftritt, sollte das Installationsprogramm einen entsprechenden Win32-Fehlercode zurückgeben, und SetupDiCallClassInstaller ruft anschließend nicht den Standardhandler auf.

Standard-DIF-Codehandler

SetupDiInstallDevice

Installer-Vorgang

Als Reaktion auf eine DIF_INSTALLDEVICE Anforderung führt ein Installationsprogramm in der Regel alle endgültigen Installationsvorgänge aus, bevor der Standardhandler das Gerät installiert. Beispielsweise kann ein Installationsprogramm die Treiber für den oberen Filter und die Treiber mit niedrigeren Filtern für das Gerät überprüfen und möglicherweise ändern, das in der Registrierung aufgeführt ist.

Sofern das flag DI_NOFILECOPY nicht in den Geräteinstallationsparametern festgelegt ist, sollte ein Installationsprogramm, das diese DIF-Anforderung verarbeitet, Dateien kopieren, die für das Gerät erforderlich sind, z. B. Treiberdateien und Systemsteuerungsdateien.

Wenn das flag DI_NOFILECOPY klar ist, aber das flag DI_NOVCP festgelegt ist, muss das Installationsprogramm alle Dateivorgänge in die angegebene Dateiwarteschlange stellen, darf die Warteschlange jedoch nicht committen.

Ein Co-Installer kann diese DIF-Anforderung im Vorverarbeitungsdurchlauf und/oder im Nachverarbeitungsdurchlauf verarbeiten. In seinem Vorverarbeitungsdurchlauf führt ein Co-Installer alle Vorgänge aus, die ausgeführt werden müssen, bevor Windows die Treiber lädt und das Gerät startet.

Im Nachverarbeitungsdurchlauf ist das Gerät betriebsbereit, es sei denn, das flag DI_NEEDREBOOT wurde festgelegt. Wenn dieses Flag festgelegt ist, konnte Windows das Gerät nicht dynamisch online schalten.

Wenn das Installationsprogramm einen Win32-Fehlercode zurückgibt, wird die Installation von Windows abgebrochen.

Wenn Windows keine INF-Datei für ein neues Gerät finden kann, sendet es DIF_INSTALLDEVICE, um einen NULL-Treiber zu installieren. Der Standardhandler (SetupDiInstallDevice) überprüft, ob das Gerät entweder den Unformatierten Modus unterstützt oder ein Nicht-PnP-Gerät ist (von IoReportDetectedDevice gemeldet). In letzterem Fall installiert Windows einen NULL-Treiber für das Gerät.

Wenn dieser Versuch fehlschlägt, sendet Windows DIF_INSTALLDEVICE erneut, diesmal mit dem in der SP_DEVINSTALL_PARAMS-Struktur festgelegten DI_FLAGSEX_SETFAILEDINSTALL-Flag. In diesem Fall legt der Standardhandler nur das FAILEDINSTALL-Flag im ConfigFlags-Registrierungswert des Geräts fest. Wenn das DI_FLAGSEX_SETFAILEDINSTALL-Flag festgelegt ist, müssen Klasseninstallationsprogramme NO_ERROR oder ERROR_DI_DO_DEFAULT zurückgeben, und Co-Installer müssen NO_ERROR zurückgeben.

Weitere Informationen zu DIF-Codes finden Sie unter Behandeln von DIF-Codes.

Aufrufen des Standardhandlers SetupDiInstallDevice

Allgemeine Informationen dazu, wann und wie Sie setupDiInstallDevice aufrufen, finden Sie unter Aufrufen von DIF-Standardcodehandlern.

In der seltenen Situation, in der der Klasseninstallationsinstaller Vorgänge ausführen muss, nachdem alle SetupDiInstallDevice-Vorgänge mit Ausnahme des Startens eines Geräts abgeschlossen wurden, muss der Klasseninstaller Folgendes ausführen:

  1. Führen Sie Vorgänge aus, die vor dem Aufrufen von SetupDiInstallDevice ausgeführt werden müssen.

  2. Legen Sie das DI_DONOTCALLCONFIGMGR-Flag im SP_DEVINSTALL_PARAMS fest. Flags-Member für das Gerät. Wenn dieses Flag festgelegt ist, führt SetupDiInstallDevice alle Standardinstallationsvorgänge aus, mit Ausnahme des Startens des Geräts.

  3. Rufen Sie SetupDiInstallDevice auf, um alle Standardinstallationsvorgänge mit Ausnahme des Startens des Geräts auszuführen.

  4. Führen Sie die Vorgänge aus, die ausgeführt werden müssen, nachdem alle Standardinstallationsvorgänge mit Ausnahme des Startens des Geräts abgeschlossen wurden.

  5. Rufen Sie SetupDiRestartDevices auf , um das Gerät zu starten.

  6. Geben Sie NO_ERROR zurück, wenn der Installationsvorgang vom Klasseninstallationsprogramm erfolgreich abgeschlossen wurde, oder gibt einen Win32-Fehler zurück, wenn der Installationsvorgang fehlgeschlagen ist.

Requirements (Anforderungen)

Version

Unterstützt in Microsoft Windows 2000 und höheren Versionen von Windows.

Header

Setupapi.h (schließen Sie Setupapi.h ein)

Weitere Informationen

DIF_INSTALLDEVICEFILES

SetupDiInstallDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS