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é.
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
[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
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 |
---|---|
|
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 . |
|
Le chemin d’accès du fichier INF spécifié n’existe pas. |
|
La valeur spécifiée pour les indicateurs n’est pas égale à zéro ou DIIRFLAG_FORCE_INF. |
|
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 :
- 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.
- Énumère les appareils présents dans le système.
- 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.
- 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.
-
L’application doit appeler DiInstallDriver plusieurs fois pour terminer une installation. Dans ce cas, l’application doit enregistrer si une valeur
True NeedReboot 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.
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 |