SetupDiInstallDevice, fonction (setupapi.h)
La fonction SetupDiInstallDevice est le gestionnaire par défaut pour la demande d’installation DIF_INSTALLDEVICE .
Syntaxe
WINSETUPAPI BOOL SetupDiInstallDevice(
[in] HDEVINFO DeviceInfoSet,
[in, out] PSP_DEVINFO_DATA DeviceInfoData
);
Paramètres
[in] DeviceInfoSet
Handle de l’ensemble d’informations sur l’appareil pour le système local qui contient un élément d’informations sur l’appareil qui représente l’appareil à installer.
[in, out] DeviceInfoData
Pointeur vers une structure de SP_DEVINFO_DATA qui spécifie un élément d’informations sur l’appareil dans DeviceInfoSet. Il s’agit d’un paramètre IN-OUT, car DeviceInfoData.DevInst peut être mis à jour avec une nouvelle valeur de handle lors du retour.
Valeur retournée
La fonction retourne TRUE si elle réussit. Sinon, elle retourne FALSE et l’erreur journalisée peut être récupérée avec un appel à GetLastError.
Remarques
SetupDiInstallDevice installe un pilote à partir du fichier INF. La définition de « pilote » de SetupAPI est en fait un « nœud de pilote ». Par conséquent, lorsque cette fonction installe un pilote, elle installe également les éléments de la liste suivante :
- Service(s) pour l’appareil.
- Fichiers de pilote.
- Co-programme d’installation spécifique à l’appareil (le cas échéant).
- Fournisseurs de pages de propriétés (le cas échéant).
- Applets du panneau de configuration (le cas échéant).
Une installation réussie comprend, sans s’y limiter, les étapes suivantes :
- Créez une clé de pilote dans le Registre et écrivez les entrées appropriées (telles que InfPath et ProviderName).
- Recherchez et traitez la section INF DDInstall pour l’appareil. La section peut être spécifique au système d’exploitation/à l’architecture. Les entrées AddReg et DelReg de la section DDInstall sont dirigées vers la clé logicielle de l’appareil. Recherchez et traitez DDInstall. Section HW dont les entrées AddReg et DelReg sont dirigées vers la clé matérielle de l’appareil. Recherchez et traitez la section INF DDInstall.LogConfigOverride, le cas échéant, pour fournir une configuration de remplacement pour l’appareil. Recherchez et traitez la section INF DDInstall.Services pour ajouter des services pour l’appareil (et éventuellement supprimer les anciens services qui ne sont plus nécessaires).
- Copiez le fichier INF dans le répertoire INF système.
-
Effectuez éventuellement les autres opérations de fichier, en fonction des paramètres d’indicateur dans les paramètres d’installation de l’appareil.
Si l’indicateur DI_NOFILECOPY et l’indicateur DI_NOVCP sont clairs, effectuez les opérations de fichier spécifiées dans la section DDInstall . Si l’indicateur DI_NOVCP est défini, les opérations de fichier sont mises en file d’attente.
Si l’indicateur DI_NOFILECOPY est défini, ne copiez pas les fichiers. Cet indicateur peut être défini si, par exemple, une opération de DIF_INSTALLDEVICEFILES a déjà été effectuée pour cette installation de l’appareil.
- Chargez les pilotes de l’appareil. Cela inclut le pilote de fonction et tous les pilotes de filtre supérieur ou inférieur.
- Appelez les routines AddDevice des pilotes.
- Démarrez l’appareil en envoyant un paquet de demande d’E /S (IRP) IRP_MN_START_DEVICE.
Un programme d’installation de classe doit retourner ERROR_DI_DO_DEFAULT ou appeler cette fonction lors de la gestion d’une demande de DIF_INSTALLDEVICE . Cette fonction effectue de nombreuses tâches pour l’installation de l’appareil et cette liste de tâches peut être étendue dans les versions ultérieures. Si un programme d’installation de classe effectue l’installation de l’appareil sans appeler cette fonction, le programme d’installation de classe peut ne pas fonctionner correctement sur les versions futures du système d’exploitation.
Si Windows ne peut pas localiser un fichier INF pour l’appareil, il envoie DIF_INSTALLDEVICE dans une tentative d’installation d’un pilote Null. SetupDiInstallDevice installe un pilote Null uniquement si l’appareil prend en charge le mode brut ou s’il s’agit d’un appareil non PnP (signalé par IoReportDetectedDevice). Pour plus d’informations, consultez DIF_INSTALLDEVICE.
Si l’indicateur DI_FLAGSEX_SETFAILEDINSTALL est défini dans la structure SP_DEVINSTALL_PARAMS , SetupDiInstallDevice définit simplement l’indicateur FAILEDINSTALL dans la valeur de Registre ConfigFlags de l’appareil.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Microsoft Windows 2000 et versions ultérieures de Windows. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | setupapi.h (inclure Setupapi.h) |
Bibliothèque | Setupapi.lib |
DLL | Setupapi.dll |