Compartir a través de


Sección DDInstall.CoInstallers de INF

Precaución

A partir de Windows 11 versión 22H2, un paquete de controladores que usa esta sección ya no es apto para una firma del Centro para desarrolladores de hardware.

Los paquetes de controladores universales y los controladores de Windows no pueden usar esta sección.

Esta sección opcional registra uno o varios coinstaladores específicos del dispositivo proporcionados en el medio de distribución para complementar las operaciones de los instaladores de clase de dispositivo existentes.

[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]...
Hace referencia a una o varias add-registry-section INF-writer-defined que almacenan información del registro sobre los coinstaladores proporcionados.

Una HKR especificada en esta sección add-registry designa la ruta de acceso del registro de "clave de software" del dispositivo que se va a instalar. Por lo tanto, para un coinstalador específico del dispositivo, escribe (o modifica) una entrada de valor CoInstallers32 en esta clave de "software" accesible para el usuario por dispositivo o controlador.

Para un coinstalador específico de clase, registra los nuevos coinstaladores modificando el contenido de las subclaves ..CoDeviceInstallers\SetupClassGUID adecuadas. La ruta de acceso a las subclaves SetupClassGUID del registro adecuadas debe especificarse explícitamente en las secciones add-registry a las que se hace referencia.

Para obtener más información, consulte Directiva AddReg de INF.

CopyFiles=@filename | file-list-section*[,file-list-section]...
Transfiere los archivos del coinstalador de origen al destino en el equipo de destino, normalmente haciendo referencia a una o varias file-list-section INF-writer-defined en otra parte del archivo INF. Esta sección file-list especifica los archivos del coinstalador que se van a copiar del medio de origen al directorio de destino en el destino.

Sin embargo, los archivos INF del sistema que instalan coinstaladores nunca usan esta directiva en una sección DDInstall.CoInstallers.

Para obtener más información, consulte Directiva CopyFiles de INF.

Include=filename.inf[,filename2.inf]...
Especifica uno o varios archivos INF proporcionados por el sistema que contienen las secciones necesarias para instalar los coinstaladores para este dispositivo o clase de configuración de dispositivo. Un archivo INF con esta entrada normalmente debe especificar Needs.

Needs=inf-section-name[,inf-section-name]...
Especifica las secciones concretas que se deben procesar durante la instalación de este dispositivo. Normalmente, es una sección DDInstall.CoInstallers dentro de un archivo INF proporcionado por el sistema que aparece en una entrada Include. Sin embargo, puede ser cualquier sección a la que se haga referencia dentro de una sección DDInstall.CoInstallers de este tipo del INF incluido.

DelFiles=file-list-section[,file-list-section]...
Hace referencia a una sección file-list que especifica los archivos que se van a quitar del destino. Esta directiva se usa con muy poca frecuencia.

Para obtener más información, consulte Directiva DelFiles de INF.

RenFiles=file-list-section[,file-list-section]...
Hace referencia a una sección file-list que especifica los archivos del destino cuyo nombre se va a cambiar antes de copiar los archivos de origen del coinstalador en el destino. Esta directiva también se utiliza muy poco.

Para obtener más información, consulte Directiva RenFiles de INF.

DelReg=del-registry-section[,del-registry-section]...
Hace referencia a una o varias delete-registry-section INF-writer-define. Esta sección especifica información obsoleta del registro sobre los coinstaladores para una instalación anterior de los mismos dispositivos que se deben quitar del registro. Una HKR especificada en esta sección delete-registry designa la misma subclave del registro que ya se ha descrito para la entrada AddReg. Esta directiva rara vez se usa en una sección DDInstall.CoInstallers.

Para obtener más información, consulte Directiva DelReg de INF.

BitReg=bit-registry-section[,bit-registry-section]...
Esta entrada es válida en esta sección, pero casi nunca se usa. Una HKR especificada en esta sección bit-registry designa la misma subclave del registro que ya se ha descrito para la entrada AddReg.

Para obtener más información, consulte Directiva BitReg de INF.

UpdateInis=update-ini-section[,update-ini-section]...
Esta entrada es válida en esta sección, pero casi nunca se usa.

Para obtener más información, consulte Directiva UpdateInis de INF.

UpdateIniFields=update-inifields-section[,update-inifields-section]...
Esta entrada es válida en esta sección, pero casi nunca se usa.

Para obtener más información, consulte Directiva UpdateIniFields de INF.

Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...
Esta entrada es válida en esta sección, pero casi nunca se usa.

Para obtener más información, consulte Directiva Ini2Reg de INF.

Comentarios

Se debe hacer referencia a la sección DDInstall especificada en una entrada específica de dispositivos o modelos en la sección Models por fabricante del archivo INF.

Si un INF incluye una sección DDInstall.Coinstallers, debe haber una para cada sección DDInstall representativa y no representativa de la plataforma. Por ejemplo, si un INF contiene una sección [install-section-name.ntx86] y una sección [install-section-name] y registra los coinstaladores específicos del dispositivo, el INF debe incluir una sección [install-section-name.ntx86.Coinstallers] y una sección [install-section-name.Coinstallers]. Para obtener más información sobre cómo usar las extensiones .nt, .ntx86, .ntia64, .ntamd64, .ntarm y .ntarm64 definidas por el sistema, consulte Creación de archivos INF para varias plataformas y sistemas operativos.

Cada directiva de una sección DDInstall.CoInstallers puede hacer referencia a más de un nombre de sección INF-writer-defined. Sin embargo, cada sección con nombre adicional debe estar separada de la siguiente con una coma (,).

Cada nombre de sección directive-created debe ser único dentro del archivo INF y debe seguir las reglas generales para definir nombres de sección. Para obtener más información sobre estas reglas, consulte Reglas generales de sintaxis para archivos INF.

Un coinstalador es un DLL de Win32 que normalmente escribe información de configuración adicional en el registro o realiza otras tareas de instalación que requieren información generada dinámicamente específica del sistema que no está disponible cuando se crea un INF. Un coinstalador específico del dispositivo complementa las operaciones de instalación del instalador de dispositivos del sistema operativo o del instalador de clase adecuado cuando se instala ese dispositivo.

Para obtener más información sobre cómo escribir y usar coinstaladores, consulte Escritura de un coinstalador.

Instalación de imágenes de coinstaladores

Todos los archivos de coinstalador deben copiarse en el directorio %SystemRoot%\system32. Al igual que cualquier operación CopyFiles del INF, el destino se controla explícitamente para una file-list-section con nombre en la sección DestinationDirs del archivo INF mediante el valor 11 de dirid o indicando este valor de dirid para la entrada DefaultDestDir.

Registro de coinstaladores específicos del dispositivo

El registro de uno o varios coinstaladores específicos del dispositivo requiere agregar una entrada de valor con tipo REG_MULTI_SZ al registro. Especifique una add-registry-section a la que haga referencia la directiva AddReg mediante el siguiente formato general:

[DDInstall.CoInstallers_DeviceAddReg]
 
HKR,,CoInstallers32,0x00010000,"DevSpecificCoInstall.dll
   [,DevSpecificEntryPoint]"[,"DevSpecific2CoInstall.dll
      [,DevSpecific2EntryPoint]"...] 

La entrada HKR se muestra como una sola línea dentro del archivo INF y cada DLL del coinstalador específico del dispositivo proporcionado debe tener un nombre único. Una vez registrados los coinstaladores enumerados, el instalador del dispositivo del sistema los llama en cada paso posterior del proceso de instalación de ese dispositivo.

Si se omite el elemento DevSpecificEntryPoint opcional, el nombre de rutina CoDeviceInstall predeterminado se usa como punto de entrada del DLL del coinstalador.

Para obtener más información, consulte Registro de un coinstalador específico del dispositivo.

Registro de coinstaladores de clase de dispositivo

Para agregar una entrada de valor (y una subclave de clase de instalación, si aún no existe) para uno o varios coinstaladores de clase de dispositivo al registro, una add-registry-section a la que hace referencia la directiva AddReg tiene el siguiente formato general:

[DDInstall.CoInstallers_ClassAddReg]
 
HKLM,System\CurrentControlSet\Control
    \CoDeviceInstallers,{SetupClassGUID},
       0x00010008,"DevClssCoInst.dll[,DevClssEntryPoint]" 
 ...

Cada entrada de esta sección add-registry se muestra como una sola línea dentro del archivo INF y cada DLL del coinstalador de clase proporcionado debe tener un nombre único. Si los coinstaladores proporcionados deben usarse para más de una clase de instalación de dispositivo, esta sección add-registry puede tener más de una entrada, cada una con el valor de SetupClassGUID adecuado.

Este tipo de coinstalador de clase de dispositivo complementario no debe reemplazar los coinstaladores ya registrados para un instalador de clase existente. Por lo tanto, el coinstalador de clase debe tener un nombre único y el valor de tipo REG_MULTI_SZ proporcionado debe anexarse (como indica el 8 en el valor de flags 0x0010008) a las entradas del coinstalador específicas de la clase, si las hay, ya presentes en la subclave {SetupClassGUID}.

Nota:

Las funciones SetupAPI nunca anexan un DevClssCoInstall.dll duplicado a una entrada de valor si ya está registrado un coinstalador del mismo nombre.

El INF para un coinstalador complementario de clase de dispositivo se puede activar mediante una instalación con el botón derecho o a través de una llamada a SetupInstallFromInfSection realizada por una aplicación de instalación de dispositivos.

Ejemplos

En este ejemplo se muestra la sección DDInstall.CoInstallers para adaptadores de red serie de IrDA. El INF proporcionado por el sistema para estas NIC IrDA (serie) proporciona un coinstalador al instalador de clase IrDA del sistema.

; 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 sección PNP.NT.CoInstallers anterior solo hace referencia a una sección add-registry específica del coinstalador.

No tiene ninguna directiva CopyFiles porque este INF proporcionado por el sistema instala un conjunto de dispositivos de red IrDA. Al igual que todos los archivos INF del sistema, este archivo INF usa la entrada LayoutFile en su sección Version para transferir el archivo del coinstalador al destino.

Cualquier sección DDInstall.CoInstallers de un INF proporcionada por un IHV u OEM requiere una directiva CopyFiles y también las secciones SourceDisksNames y SourceDisksFiles.

Consulte también

AddReg

BitReg

CopyFiles

DDInstall

DelFiles

DelReg

DestinationDirs

Ini2Reg

RenFiles

SourceDisksFiles

SourceDisksNames

UpdateIniFields

Versión