Partager via


DiInstallDriverA, fonction (newdev.h)

La fonction DiInstallDriver préinstalle un pilote dans le magasin de pilotes , puis installe le pilote sur les appareils présents dans le système pris en charge par le pilote.

Syntaxe

BOOL DiInstallDriverA(
  [in, optional]  HWND   hwndParent,
  [in]            LPCSTR InfPath,
  [in]            DWORD  Flags,
  [out, optional] PBOOL  NeedReboot
);

Paramètres

[in, optional] hwndParent

Handle vers la fenêtre de niveau supérieur qui DiInstallDriver utilise pour afficher tout composant d’interface utilisateur associé à l’installation de l’appareil. Ce paramètre est facultatif et peut être défini sur NULL.

[in] InfPath

Pointeur vers une chaîne terminée par NULL qui fournit le chemin complet du fichier INF pour le package de pilotes .

[in] Flags

Valeur de type DWORD qui spécifie zéro ou une combinaison d’un ou plusieurs indicateurs, comme décrit ici (Indicateurs est généralement défini sur zéro).

Si Indicateurs est égal à zéro, DiInstallDriver installe uniquement le pilote spécifié sur un appareil si le pilote est mieux adapté à un appareil que le pilote actuellement installé sur un appareil. Pour plus d’informations sur la façon dont Windows sélectionne un pilote pour un appareil, consultez Comment Windows sélectionne les pilotes.

Si indicateurs inclut DIIRFLAG_FORCE_INF, DiInstallDriver installe le pilote spécifié sur un appareil correspondant, que le pilote corresponde mieux ou non à l’appareil que le pilote actuellement installé sur l’appareil. Si DIIRFLAG_INSTALL_AS_SET est également spécifié, DIIRFLAG_FORCE_INF est ignoré.

Attention Forcer l’installation du pilote peut entraîner le remplacement d’un pilote plus compatible ou plus récent par un pilote moins compatible ou plus ancien.
 

Si indicateurs inclut DIIRFLAG_INSTALL_AS_SET (pris en charge sur Windows 10 version 1709 et ultérieure), infPath doit spécifier un répertoire au lieu d’un chemin complet vers un fichier INF et DiInstallDriver installera tous les fichiers INF dans ce répertoire avec un comportement spécial. Tous les packages de pilotes seront mis en scène dans l' du magasin de pilotes , mais ne seront pas encore disponibles pour être installés sur les appareils. Lors de l’arrêt suivant du système, ces packages de pilotes seront mis à disposition pour être installés sur les appareils à l’avenir et ils seront installés sur tous les appareils dont ils correspondent le mieux pour que les appareils soient prêts lors du prochain démarrage du système.

[out, optional] NeedReboot

Pointeur vers une valeur de type BOOL qui DiInstallDriver définit pour indiquer si un système est redémarré est nécessaire pour terminer l’installation. Ce paramètre est facultatif et peut être NULL. Si le paramètre est fourni et qu’un redémarrage du système est nécessaire pour terminer l’installation, DiInstallDriver définit la valeur sur TRUE. Dans ce cas, l’appelant doit inviter l’utilisateur à redémarrer le système. Si ce paramètre est fourni et qu’un redémarrage du système n’est pas nécessaire pour terminer l’installation, DiInstallDriver définit la valeur sur FALSE. Si le paramètre est NULL et qu’un redémarrage du système est nécessaire pour terminer l’installation, DiInstallDriver affiche une boîte de dialogue de redémarrage du système. Pour plus d’informations sur ce paramètre, consultez la section remarques suivante.

Valeur de retour

DiInstallDriver retourne TRUE si la fonction a correctement préinstallé le package de pilotes spécifié dans le magasin de pilotes . DiInstallDriver retourne également TRUE si la fonction a correctement installé le pilote sur un ou plusieurs appareils du système. Si le package de pilotes n’est pas correctement installé dans le magasin de pilotes, DiInstallDriver retourne faux et l’erreur journalisée peut être récupérée en appelant GetLastError. Voici quelques-unes des valeurs d’erreur les plus courantes qui GetLastError peuvent retourner :

Retourner le code Description
ERROR_ACCESS_DENIED
L’appelant n’a pas de privilèges d’administrateur. Par défaut, Windows exige que l’appelant dispose de privilèges d’administrateur pour préinstaller un package de pilotes dans le magasin de pilotes .
ERROR_FILE_NOT_FOUND
Le chemin d’accès du fichier INF spécifié n’existe pas.
ERROR_INVALID_FLAGS
La valeur spécifiée pour les indicateurs n’est pas égale à zéro ou DIIRFLAG_FORCE_INF.
ERROR_IN_WOW64
L’application appelante est une application 32 bits qui tente d’s’exécuter dans un environnement 64 bits, qui n’est pas autorisé. Pour plus d’informations, consultez Installation d’appareils sur des systèmes 64 bits.

Remarques

DiInstallDriver effectue les opérations suivantes :

  1. Préinstalle le package de pilotes dans le magasin de pilotes . S’il existe une instance du même package de pilotes déjà préinstallé dans le magasin de pilotes, DiInstallDriver supprime d’abord cette instance, puis ajoute la nouvelle instance du package de pilotes au magasin de pilotes.
  2. Énumère les appareils présents dans le système.
  3. Si indicateurs est égal à zéro, installe le pilote sur un appareil uniquement si le pilote spécifié est une meilleure correspondance pour l’appareil que le pilote actuellement installé sur l’appareil.
  4. Si indicateurs est égal à DIIRFLAG_FORCE_INF, installe le pilote sur un appareil, que le package de pilotes corresponde mieux à l’appareil que le pilote actuellement installé sur l’appareil.
En règle générale, une application d’installation doit définir NeedReboot sur NULL pour diriger DiInstallDriver pour inviter l’utilisateur à redémarrer le système si un redémarrage est nécessaire pour terminer l’installation. Une application doit fournir un pointeur NeedReboot uniquement dans les cas suivants :
  • L’application doit appeler DiInstallDriver plusieurs fois pour terminer une installation. Dans ce cas, l’application doit enregistrer si une valeur TrueNeedReboot est retournée par l’un des appels à DiInstallDriver et, le cas échéant, inviter l’utilisateur à redémarrer le système après l’appel final à DiInstallDriver.
  • L’application doit effectuer des opérations requises, autres que l’appel de DiInstallDriver, avant qu’un redémarrage du système ne se produise. Si un redémarrage du système est nécessaire, l’application doit terminer les opérations requises, puis inviter l’utilisateur à redémarrer le système.
  • L’application est un programme d’installation de classe, auquel cas, le programme d’installation de classe doit définir l’indicateur de DI_NEEDREBOOT dans les indicateurs membre de la structure SP_DEVINSTALL_PARAMS d’un appareil.
Pour installer un pilote sélectionné sur un appareil sélectionné, appelez DiInstallDevice. Pour plus d’informations, consultez fonctions SetupAPI qui simplifient l’installation du pilote.

Note

L’en-tête newdev.h définit DiInstallDriver comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows Vista et versions ultérieures de Windows.
plateforme cible Bureau
d’en-tête newdev.h (include Newdev.h)
bibliothèque Newdev.lib

Voir aussi

diInstallDevice