Section INF DDInstall.CoInstallers
Attention
À partir de la version 22H2 de Windows 11, un package de pilotes utilisant cette section n’est plus éligible à une signature du Hardware Developer Center.
Les packages de pilotes universels et les pilotes Windows ne peuvent pas utiliser cette section.
Cette section optionnelle enregistre un ou plusieurs co-installers spécifiques à l’appareil, fournis sur le support de distribution, pour compléter les opérations des installateurs de classe d’appareil existants.
[install-section-name.CoInstallers] |
[install-section-name.nt.CoInstallers] |
[install-section-name.ntx86.CoInstallers] |
[install-section-name.ntia64.CoInstallers] | (Windows XP and later versions of Windows)
[install-section-name.ntamd64.CoInstallers] | (Windows XP and later versions of Windows)
[install-section-name.ntarm.CoInstallers] | (Windows 8 and later versions of Windows)
[install-section-name.ntarm64.CoInstallers] (Windows 10 version 1709 and later versions of Windows)
AddReg=add-registry-section[,add-registry-section]...
CopyFiles=@filename | file-list-section[,file-list-section]...
[Include=filename.inf[,filename2.inf]...]
[Needs=inf-section-name[,inf-section-name]...]
[DelFiles=file-list-section[,file-list-section]...]
[RenFiles=file-list-section[,file-list-section]...]
[DelReg=del-registry-section[,del-registry-section]...]
[BitReg=bit-registry-section[,bit-registry-section]...]
[UpdateInis=update-ini-section[,update-ini-section]...]
[UpdateIniFields=update-inifields-section[,update-inifields-section]...]
[Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...]
...
Entries
AddReg=add-registry-section[,add-registry-section]...
Référence une ou plusieurs section add-registry-section définies par le rédacteur INF qui stockent des informations de registre sur les co-installers fournis.
Un HKR spécifié dans une telle section-ajout-registre désigne le chemin du registre « clé logiciel » de l’appareil en cours d’installation. Ainsi, pour un co-installer spécifique à l’appareil, il écrit (ou modifie) une entrée de valeur CoInstallers32 dans cette « clé logiciel » par appareil/pilote accessible à l’utilisateur.
Pour un co-installer spécifique à une classe, il enregistre les nouveaux co-installers en modifiant le contenu des sous-clés ..CoDeviceInstallers\SetupClassGUID appropriées. Le chemin des sous-clés SetupClassGUID appropriées doit être explicitement spécifié dans les sections-ajout-registre référencées.
Pour plus d’informations, consultez la section Directive INF AddReg.
Copyfiles=@filename | file-list-section[,file-list-section]...
Transfère les fichiers de co-installer source vers la destination sur l’ordinateur cible, généralement en se référant à une ou plusieurs file-list-section définies par le rédacteur INF ailleurs dans le fichier INF. Une telle section-liste-fichiers spécifie les fichiers de co-installer à copier depuis le support source vers le répertoire de destination sur la cible.
Cependant, les fichiers INF système qui installent des co-installers n’utilisent jamais cette directive dans une section DDInstall.CoInstallers.
Pour plus d’informations, consultez la section Directive INF CopyFiles.
Include=filename.inf[,filename2.inf]...
Spécifie un ou plusieurs fichiers INF fournis par le système qui contiennent les sections nécessaires pour installer les co-installers pour cet appareil ou classe de configuration de l’appareil. Un fichier INF avec cette entrée devrait généralement spécifier Needs.
Needs=inf-section-name[,inf-section-name]...
Spécifie les sections particulières qui doivent être traitées lors de l’installation de cet appareil. En général, une telle section nommée est une section DDInstall.CoInstallers dans un fichier INF fourni par le système, répertoriée dans une entrée Include. Cependant, il peut s’agir de n’importe quelle section référencée dans une telle section DDInstall.CoInstallers du fichier INF inclus.
DelFiles=file-list-section[,file-list-section]...
Référence une section-liste-fichiers spécifiant les fichiers à supprimer de la cible. Cette directive est rarement utilisée.
Pour plus d’informations, consultez la section Directive INF DelFiles.
RenFiles=file-list-section[,file-list-section]...
Référence une section-liste-fichiers spécifiant les fichiers sur la destination à renommer avant que les fichiers source du co-installer ne soient copiés sur la cible. Cette directive est également rarement utilisée.
Pour plus d’informations, consultez la section Directive INF RenFiles.
DelReg=del-registry-section[,del-registry-section]...
Référence une ou plusieurs delete-registry-section définies par le rédacteur INF. Une telle section spécifie les informations de registre obsolètes sur les co-installers d’une installation précédente des mêmes appareils qui doivent être supprimées du registre. Un HKR spécifié dans une telle section de suppression de registre désigne la même sous-clé de registre que celle décrite précédemment pour l’entrée AddReg. Cette directive est rarement utilisée dans une section DDInstall.CoInstallers.
Pour plus d’informations, consultez la section Directive INF DelReg.
BitReg=bit-registry-section[,bit-registry-section]...
Cette entrée est valide dans cette section, mais presque jamais utilisée. Un HKR spécifié dans une telle section-registre-bit désigne la même sous-clé de registre que celle décrite précédemment pour l’entrée AddReg.
Pour plus d’informations, consultez la section Directive INF BitReg.
UpdateInis=update-ini-section[,update-ini-section]...
Cette entrée est valide dans cette section, mais presque jamais utilisée.
Pour plus d’informations, consultez la section Directive INF UpdateInis.
UpdateIniFields=update-inifields-section[,update-inifields-section]...
Cette entrée est valide dans cette section, mais presque jamais utilisée.
Pour plus d’informations, consultez la section Directive INF UpdateIniFields.
Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...
Cette entrée est valide dans cette section, mais presque jamais utilisée.
Pour plus d’informations, veuillez consulter la section Directive INF Ini2Reg.
Notes
La section DDInstall spécifiée doit être référencée dans une entrée spécifique à un appareil/modèle dans la section Models du fichier INF.
Si un fichier INF comprend une section DDInstall.Coinstallers, il doit y en avoir une pour chaque section DDInstall décorée ou non par plateforme. Par exemple, si un fichier INF contient une section [install-section-name.ntx86] et une section [install-section-name] et qu’il enregistre des co-installers spécifiques à l’appareil, alors le fichier INF doit inclure à la fois une section [install-section-name.ntx86.Coinstallers] et une section [install-section-name.Coinstallers]. Pour plus d’informations sur l’utilisation des extensions définies par le système .nt, .ntx86, .ntia64, .ntamd64, .ntarm et .ntarm64, veuillez consulter la section Création de fichiers INF pour plusieurs plateformes et systèmes d’exploitation.
Chaque directive dans une section DDInstall.CoInstallers peut référencer plus d’un nom de section définie par le rédacteur INF. Cependant, chaque section nommée supplémentaire doit être séparée de la suivante par une virgule (,).
Chaque nom de section créé par directive doit être unique dans le fichier INF et doit suivre les règles générales pour la définition des noms de section. Pour plus d'informations sur ces règles, voir Règles générales de syntaxe pour les fichiers INF.
Un co-installer est une DLL Win32 qui écrit généralement des informations de configuration supplémentaires dans le registre ou effectue d’autres tâches d’installation nécessitant des informations dynamiquement générées et spécifiques au système, qui ne sont pas disponibles lors de la création du fichier INF. Un co-installer spécifique à l’appareil complète les opérations d’installation soit de l’installateur d’appareil du système d’exploitation, soit de l’installateur de classe approprié lorsque cet appareil est installé.
Pour plus d’informations sur la façon d’écrire et d’utiliser des co-installers, veuillez consulter la section Écriture d’un co-installer.
Installation d’images de co-installers
Tous les fichiers de co-installer doivent être copiés dans le répertoire %SystemRoot%\system32. Comme pour toute opération CopyFiles d’un fichier INF, la destination est explicitement contrôlée pour une file-list-section nommée dans la section DestinationDirs du fichier INF par la valeur dirid 11 ou en fournissant cette valeur dirid pour l’entrée DefaultDestDir.
Enregistrement des co-installers spécifiques à l’appareil
L’enregistrement d’un ou plusieurs co-installers spécifiques à l’appareil nécessite l’ajout d’une entrée de valeur de type REG_MULTI_SZ dans le registre. Spécifiez une add-registry-section référencée par la directive AddReg, en utilisant la forme générale suivante :
[DDInstall.CoInstallers_DeviceAddReg]
HKR,,CoInstallers32,0x00010000,"DevSpecificCoInstall.dll
[,DevSpecificEntryPoint]"[,"DevSpecific2CoInstall.dll
[,DevSpecific2EntryPoint]"...]
L’entrée HKR est répertoriée comme une seule ligne dans le fichier INF, et chaque DLL de co-installer spécifique à l’appareil fournie doit avoir un nom unique. Une fois les co-installers répertoriés enregistrés, l’installateur d’appareil du système les appelle à chaque étape suivante du processus d’installation pour cet appareil.
Si le point d’entrée optionnel DevSpecificEntryPoint est omis, le nom de routine par défaut CoDeviceInstall est utilisé comme point d’entrée de la DLL de co-installer.
Pour plus d’informations, veuillez consulter la section Enregistrement d’un co-installer spécifique à l’appareil.
Enregistrement des co-installers de classe d’appareil
Pour ajouter une entrée de valeur (et sous-clé de configuration de classe, si elle n’existe pas déjà) pour un ou plusieurs co-installers de classe d’appareil dans le registre, une add-registry-section référencée par la directive AddReg prend la forme générale suivante :
[DDInstall.CoInstallers_ClassAddReg]
HKLM,System\CurrentControlSet\Control
\CoDeviceInstallers,{SetupClassGUID},
0x00010008,"DevClssCoInst.dll[,DevClssEntryPoint]"
...
Chaque entrée dans une telle section-ajout-registre est répertoriée comme une seule ligne dans le fichier INF, et chaque DLL de co-installer de classe fournie doit avoir un nom unique. Si les co-installers fournis doivent être utilisés pour plus d’une device setup class, cette section-ajout-registre peut avoir plus d’une entrée, chacune avec la valeur SetupClassGUID appropriée.
Un co-installer supplémentaire de classe d’appareil ne doit pas remplacer les co-installers déjà enregistrés pour un installateur de classe existant. Ainsi, le co-installer de classe doit avoir un nom unique et la valeur de type REG_MULTI_SZ fournie doit être ajoutée (comme l’indique le 8 dans la valeur de l’indicateur flags 0x0010008) aux entrées de co-installer spécifiques à la classe, le cas échéant, déjà présentes dans la sous-clé {SetupClassGUID}.
Remarque
Les fonctions SetupAPI n’ajoutent jamais un DevClssCoInstall.dll en double à une entrée de valeur si un co-installer du même nom est déjà enregistré.
Le fichier INF pour un co-installer supplémentaire de classe d’appareil peut être activé par une installation par clic droit ou via un appel à SetupInstallFromInfSection effectué par une application d’installation d’appareil.
Exemples
Cet exemple montre la section DDInstall.CoInstallers pour les adaptateurs réseau série IrDA. Le fichier INF fourni par le système pour ces NICs IrDA (série) fournit un co-installer à l’installateur de classe IrDA du système.
; DDInstall section
[PNP.NT]
AddReg=ISIR.reg, Generic.reg, Serial.reg
PromptForPort=0 ; This is handled by IRCLASS.DLL
LowerFilters=SERIAL ; This is handled by IRCLASS.DLL
BusType=14
Characteristics=0x4 ; NCF_PHYSICAL
; ... PNP.NT.Services section omitted here
[PNP.NT.CoInstallers]
AddReg = ISIR.CoInstallers.reg
; ...
[IRSIR.reg]
HKR, Ndi, HelpText, 0, %IRSIR.Help%
HKR, Ndi, Service, 0, "IRSIR"
HKR, Ndi\Interfaces, DefUpper, 0, "ndisirda"
HKR, Ndi\Interfaces, DefLower, 0, "nolower"
HKR, Ndi\Interfaces, UpperRange, 0, "ndisirda"
HKR, Ndi\Interfaces, LowerRange, 0, "nolower"
[Generic.reg]
HKR,,InfraredTransceiverType,0,"0"
[Serial.reg]
HKR,,SerialBased,0, "0"
[ISIR.CoInstallers.reg]
HKR,,CoInstallers32,0x00010000,"IRCLASS.dll,IrSIRClassCoInstaller"
; ... Services and Event Log registry sections omitted here
[Strings]
; ...
IRSIR.Help = "An IrDA serial infrared device is a built-in COM port or
external transceiver which transmits infrared pulses. This NDIS
miniport driver installs as a network adapter and binds to the FastIR
protocol."
La section PNP.NT.CoInstallers précédente ne faisait référence qu’à une section-ajout-registre spécifique au co-installer.
Elle n’avait pas de directive CopyFiles car ce fichier INF fourni par le système installe un ensemble de périphériques réseau IrDA. Comme tous les fichiers INF système, ce fichier INF utilise l’entrée LayoutFile dans sa section Version pour transférer le fichier de co-installer à la destination.
Toute section DDInstall.CoInstallers dans un fichier INF fourni par un IHV ou un OEM nécessite une directive CopyFiles ainsi que des sections SourceDisksNames et SourceDisksFiles.