Partager via


DIF_INSTALLDEVICE

Une demande de DIF_INSTALLDEVICE permet à un programme d’installation d’effectuer des tâches avant et/ou après l’installation de l’appareil.

Date d’envoi

Après avoir sélectionné le pilote, inscrit tous les co-programmes d’installation d’appareil et inscrit toutes les interfaces d’appareil.

Qui gère

Co-programme d’installation de classe

Peut gérer

Co-programme d’installation d’appareil

Peut gérer

Programme d’installation de classe

Peut gérer

Entrée du programme d’installation

DeviceInfoSet
Fournit un handle au jeu d’informations sur l’appareil qui contient l’appareil à installer.

DeviceInfoData
Fournit un pointeur vers une structure de SP_DEVINFO_DATA pour l’appareil dans le jeu d’informations de 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 pour DeviceInfoData. Par exemple, un programme d’installation peut définir l’indicateur DI_NEEDREBOOT ou définir l’indicateur DI_DONOTCALLCONFIGMG pour empêcher Windows de mettre l’appareil en ligne dynamiquement avec son pilote et ses paramètres nouvellement installés.

Valeur de retour du programme d’installation

Un co-programme d’installation retourne généralement NO_ERROR ou ERROR_DI_POSTPROCESSING_REQUIRED. Un co-programme d’installation peut également retourner un code d’erreur Win32.

Si un programme d’installation de classe gère correctement cette demande 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 d’un gestionnaire de code DIF par défaut, consultez Appel de 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

SetupDiInstallDevice

Opération du programme d’installation

En réponse à une demande de DIF_INSTALLDEVICE un programme d’installation effectue généralement toutes les opérations d’installation finales avant que le gestionnaire par défaut n’installe l’appareil. Par exemple, un programme d’installation peut case activée, et éventuellement modifier, les pilotes de filtre supérieur et les pilotes de filtre inférieur pour l’appareil répertorié dans le Registre.

À moins que l’indicateur DI_NOFILECOPY soit défini dans les paramètres d’installation de l’appareil, un programme d’installation qui gère cette demande DIF doit copier les fichiers requis pour l’appareil, tels que les fichiers de pilotes et les fichiers du panneau de configuration.

Si l’indicateur DI_NOFILECOPY est clair, mais que l’indicateur DI_NOVCP est défini, le programme d’installation doit mettre en file d’attente toutes les opérations de fichier dans la file d’attente fournie, mais ne doit pas valider la file d’attente.

Un co-programme d’installation peut gérer cette requête DIF dans sa passe de prétraitement et/ou dans sa passe post-traitement. Dans sa passe de prétraitement, un co-programme d’installation effectue toutes les opérations qui doivent se produire avant que Windows charge les pilotes et démarre l’appareil.

Dans sa passe post-traitement, l’appareil est opérationnel, sauf si l’indicateur DI_NEEDREBOOT a été défini. Si cet indicateur est défini, Windows n’a pas pu mettre l’appareil en ligne dynamiquement.

Si le programme d’installation retourne un code d’erreur Win32, Windows abandonne l’installation.

Si Windows ne peut pas localiser un fichier INF pour un nouvel appareil, il envoie DIF_INSTALLDEVICE dans une tentative d’installation d’un pilote null. Le gestionnaire par défaut (SetupDiInstallDevice) vérifie si l’appareil prend en charge le mode brut ou s’il s’agit d’un appareil non PnP (signalé par IoReportDetectedDevice). Dans ce dernier cas, Windows installe un pilote Null pour l’appareil.

Si cette tentative échoue, Windows envoie à nouveau DIF_INSTALLDEVICE, cette fois avec l’indicateur DI_FLAGSEX_SETFAILEDINSTALL défini dans la structure SP_DEVINSTALL_PARAMS . Dans ce cas, le gestionnaire par défaut définit simplement l’indicateur FAILEDINSTALL dans la valeur de Registre ConfigFlags de l’appareil. Si l’indicateur DI_FLAGSEX_SETFAILEDINSTALL est défini, les programmes d’installation de classe doivent retourner NO_ERROR ou ERROR_DI_DO_DEFAULT et les co-programmes d’installation doivent retourner NO_ERROR.

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

Appel du gestionnaire par défaut SetupDiInstallDevice

Pour obtenir des informations générales sur le moment et la façon d’appeler un SetupDiInstallDevice, consultez Appel de gestionnaires de code DIF par défaut.

Dans les rares situations où le programme d’installation de classe doit effectuer des opérations une fois que toutes les opérations SetupDiInstallDevice , à l’exception du démarrage d’un appareil, sont terminées, le programme d’installation de classe doit :

  1. Effectuez des opérations qui doivent être effectuées avant d’appeler SetupDiInstallDevice.

  2. Définissez l’indicateur DI_DONOTCALLCONFIGMGR dans le SP_DEVINSTALL_PARAMS. Indicateur membre pour l’appareil. Si cet indicateur est défini, SetupDiInstallDevice effectue toutes les opérations d’installation par défaut, à l’exception du démarrage de l’appareil.

  3. Appelez SetupDiInstallDevice pour effectuer toutes les opérations d’installation par défaut, à l’exception du démarrage de l’appareil.

  4. Effectuez les opérations qui doivent être effectuées une fois que toutes les opérations d’installation par défaut, à l’exception du démarrage de l’appareil, sont terminées.

  5. Appelez SetupDiRestartDevices pour démarrer l’appareil.

  6. Retournez NO_ERROR si le programme d’installation de classe a réussi l’opération d’installation ou retournez une erreur Win32 si l’opération d’installation a échoué.

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

DIF_INSTALLDEVICEFILES

SetupDiInstallDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS