Partager via


DIF_SELECTBESTCOMPATDRV

Notes

Cette requête a été déconseillée dans Windows 10 version 1703 (Redstone 2). Dans les versions plus récentes de Windows, ce rappel n’est plus appelé.

Une demande DIF_SELECTBESTCOMPATDRV permet à un programme d’installation de sélectionner le meilleur pilote dans la liste des pilotes compatibles de l’élément d’informations sur le périphérique.

Date d’envoi

Lorsque le système d’exploitation se prépare à installer un nouveau périphérique PnP ou effectue une opération de pilote de modification sur un appareil PnP.

Cette requête DIF est généralement utilisée lors d’une configuration PnP. Si un appareil est installé manuellement, Windows envoie une demande de DIF_SELECTDEVICE .

Qui gère

Co-programme d’installation de classe

Peut gérer

Co-programme d’installation d’appareil

Ne gère pas

Programme d’installation de classe

Peut gérer

Entrée du programme d’installation

DeviceInfoSet
Fournit un handle au jeu d’informations de l’appareil qui contient l’appareil.

DeviceInfoData
Fournit un pointeur vers une structure de SP_DEVINFO_DATA qui identifie l’appareil dans le jeu d’informations sur l’appareil.

Paramètres d’installation de l’appareil
Des paramètres d’installation d’appareil (SP_DEVINSTALL_PARAMS) sont associés à DeviceInfoData.

Paramètres d’installation de classe
None

Sortie du programme d’installation

Paramètres d’installation de l’appareil
Un programme d’installation peut modifier les paramètres d’installation de l’appareil. Toutefois, elles ne le font généralement pas lors de la gestion de cette demande DIF.

DeviceInfoData
En guise d’effet secondaire, un programme d’installation peut modifier la liste des pilotes associée à DeviceInfoData, en particulier le SP_DRVINSTALL_PARAMS.

Valeur de retour du programme d’installation

Un co-programme d’installation peut retourner NO_ERROR, ERROR_DI_POSTPROCESSING_REQUIRED ou un code d’erreur Win32.

Si un programme d’installation de classe gère correctement cette requête et que SetupDiCallClassInstaller doit ensuite appeler le gestionnaire par défaut, le programme d’installation de classe retourne ERROR_DI_DO_DEFAULT.

Si le programme d’installation de classe gère correctement cette demande, notamment en appelant directement le gestionnaire par défaut, le programme d’installation de classe doit retourner NO_ERROR et SetupDiCallClassInstaller n’appellera plus le gestionnaire par défaut par la suite.

Note Le programme d’installation de classe peut appeler directement le gestionnaire par défaut, mais le programme d’installation de classe ne doit jamais tenter de remplacer les opérations du gestionnaire par défaut.

Pour plus d’informations sur l’appel du gestionnaire par défaut, consultez Appel des gestionnaires de code DIF par défaut.

Si le programme d’installation de classe rencontre une erreur, le programme d’installation doit retourner un code d’erreur Win32 approprié et SetupDiCallClassInstaller n’appellera pas par la suite le gestionnaire par défaut.

Gestionnaire de code DIF par défaut

SetupDiSelectBestCompatDrv

Opération du programme d’installation

Un programme d’installation gère cette demande DIF pour participer à la sélection d’un pilote pour un appareil PnP. Un programme d’installation répond généralement à cette demande DIF de l’une des manières suivantes :

  • Ne rien faire.

    Si un programme d’installation n’a pas d’exigences de sélection particulières, il ne fait rien en réponse à cette demande DIF. Un programme d’installation de classe retourne ERROR_DI_DO_DEFAULT et un co-programme d’installation retourne NO_ERROR.

  • Modifiez les paramètres d’un ou plusieurs pilotes dans la liste des pilotes.

    Par exemple, un programme d’installation peut supprimer un pilote de la prise en compte de l’appareil en le marquant DNF_BAD_DRIVER. Un programme d’installation modifie les paramètres du pilote en procédant comme suit :

    1. Obtenez les informations sur le premier pilote de la liste en appelant SetupDiEnumDriverInfo et SetupDiGetDriverInstallParams. Si nécessaire, modifiez les paramètres du pilote et appliquez la modification en appelant SetupDiSetDriverInstallParams.

      Si un pilote est un choix dans le pire des cas, définissez le rang du pilote sur 0xFFFF ou une valeur supérieure dans les paramètres d’installation du pilote. Pour plus d’informations, consultez Comment Windows sélectionne les pilotes .

    2. Répétez l’étape précédente jusqu’à ce que vous ayez traité tous les pilotes de la liste. Veillez à incrémenter le paramètre MemberIndex sur SetupDiEnumDriverInfo , comme décrit dans la page de référence de cette fonction.

    Une fois qu’un programme d’installation de classe a modifié la liste des pilotes, il retourne ERROR_DI_DO_DEFAULT. Si un co-programme d’installation modifie la liste des pilotes, il doit le faire lors du prétraitement et retourner NO_ERROR.

  • Sélectionnez le meilleur pilote pour l’appareil.

    Cette action est moins courante, mais un programme d’installation peut choisir le meilleur pilote pour l’appareil. Un tel programme d’installation examine les données de chaque pilote, choisit un pilote et appelle SetupDiSetSelectedDriver pour définir le pilote. Une fois qu’un programme d’installation a définit le pilote sélectionné, il retourne NO_ERROR.

    Si un co-programme d’installation sélectionne un pilote, il doit le faire en post-traitement.

Pour plus d’informations sur les codes DIF, consultez Gestion des codes DIF.

Spécifications

Version

Pris en charge dans Microsoft Windows 2000 et versions ultérieures de Windows.

En-tête

Setupapi.h (inclure Setupapi.h)

Voir aussi

SetupDiSelectBestCompatDrv

SetupDiSetSelectedDriver

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS