Share via


DIF_SELECTBESTCOMPATDRV

Hinweis

Diese Anforderung wurde in Windows 10 Version 1703 (Redstone 2) als veraltet markiert. In neueren Versionen von Windows wird dieser Rückruf nicht mehr aufgerufen.

Eine DIF_SELECTBESTCOMPATDRV-Anforderung ermöglicht es einem Installationsprogramm, den besten Treiber aus der Liste der kompatiblen Treiber des Geräteinformationselements auszuwählen.

Sendebedingungen

Wenn das Betriebssystem die Installation eines neuen PnP-Geräts vorbereitet oder einen Treiberwechselvorgang auf einem PnP-Gerät ausführt.

Diese DIF-Anforderung wird in der Regel während einer PnP-Konfiguration verwendet. Wenn ein Gerät manuell installiert wird, sendet Windows eine DIF_SELECTDEVICE Anforderung.

Wer behandelt

Klassen-Co-Installer

Kann verarbeiten

Geräte-Co-Installer

Behandelt nicht

Klasseninstallationsprogramm

Kann verarbeiten

Eingabe des Installationsprogramms

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

DeviceInfoData
Stellt einen Zeiger auf eine SP_DEVINFO_DATA-Struktur bereit, die das Gerät im Geräteinformationssatz identifiziert.

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

Klasseninstallationsparameter
Keine

Installationsprogrammausgabe

Geräteinstallationsparameter
Ein Installationsprogramm kann die Geräteinstallationsparameter ändern. Dies ist jedoch in der Regel nicht der Fall, wenn diese DIF-Anforderung verarbeitet wird.

DeviceInfoData
Als Nebeneffekt kann ein Installationsprogramm die Treiberliste ändern, die deviceInfoData zugeordnet ist, insbesondere die SP_DRVINSTALL_PARAMS.

Rückgabewert des Installers

Ein Co-Installer kann NO_ERROR, ERROR_DI_POSTPROCESSING_REQUIRED oder einen Win32-Fehlercode zurückgeben.

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 des Standardhandlers 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

SetupDiSelectBestCompatDrv

Installer-Vorgang

Ein Installationsprogramm verarbeitet diese DIF-Anforderung, um an der Auswahl eines Treibers für ein PnP-Gerät teilzunehmen. Ein Installationsprogramm antwortet auf diese DIF-Anforderung in der Regel auf eine der folgenden Arten:

  • Sie unternehmen nichts.

    Wenn ein Installationsprogramm keine besonderen Auswahlanforderungen hat, tut es nichts als Reaktion auf diese DIF-Anforderung. Ein Klasseninstallationsprogramm gibt ERROR_DI_DO_DEFAULT zurück, und ein Co-Installer gibt NO_ERROR zurück.

  • Ändern Sie die Parameter eines oder mehrerer Treiber in der Treiberliste.

    Beispielsweise kann ein Installationsprogramm einen Treiber aus der Berücksichtigung des Geräts entfernen, indem es DNF_BAD_DRIVER markiert. Ein Installationsprogramm ändert treiberparameter, indem die folgenden Schritte ausgeführt werden:

    1. Rufen Sie die Informationen zum ersten Treiber in der Liste ab, indem Sie SetupDiEnumDriverInfo und SetupDiGetDriverInstallParams aufrufen. Ändern Sie ggf. die Treiberparameter, und wenden Sie die Änderung an, indem Sie SetupDiSetDriverInstallParams aufrufen.

      Wenn ein Treiber im schlimmsten Fall gewählt wird, legen Sie den Rang des Treibers in den Treiberinstallationsparametern auf 0xFFFF oder höher fest. Weitere Informationen finden Sie unter So wählt Windows Treiber aus.

    2. Wiederholen Sie den vorherigen Schritt, bis Sie alle Treiber in der Liste verarbeitet haben. Stellen Sie sicher, dass Sie den MemberIndex-Parameter auf SetupDiEnumDriverInfo erhöhen, wie auf der Referenzseite für diese Funktion beschrieben.

    Nachdem ein Klasseninstallationsprogramm die Treiberliste geändert hat, wird ERROR_DI_DO_DEFAULT zurückgegeben. Wenn ein Co-Installer die Treiberliste ändert, sollte es dies in der Vorverarbeitung tun und NO_ERROR zurückgeben.

  • Wählen Sie den besten Treiber für das Gerät aus.

    Diese Aktion ist weniger häufig, aber ein Installationsprogramm kann den besten Treiber für das Gerät auswählen. Ein solches Installationsprogramm würde die Daten für jeden Treiber untersuchen, einen Treiber auswählen und SetupDiSetSelectedDriver aufrufen, um den Treiber festzulegen. Nachdem ein Installationsprogramm den ausgewählten Treiber festgelegt hat, wird NO_ERROR zurückgegeben.

    Wenn ein Co-Installer einen Treiber auswählt, sollte er dies in der Nachverarbeitung tun.

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

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

SetupDiSelectBestCompatDrv

SetupDiSetSelectedDriver

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS