Seção INF DDInstall.CoInstallers
Cuidado
A partir do Windows 11 versão 22H2, um pacote de driver que usa essa seção não está mais qualificado para uma assinatura da Central do Desenvolvedor para Hardware.
Os pacotes de drivers universais e os drivers do Windows não podem usar essa seção.
Esta seção opcional registra um ou mais coinstaladores específicos do dispositivo fornecidos na mídia de distribuição para complementar as operações dos instaladores de classe dos dispositivos atuais.
[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]...]
...
Entradas
AddReg=add-registry-section[,add-registry-section]...
Faz referência a uma ou mais add-registry-sections definidas pelo gravador de INF que armazenam informações do registro sobre os coinstaladores fornecidos.
Um HKR especificado em tal seção add-registry designa o caminho do registro de "chave de software" do dispositivo que está sendo instalado. Portanto, para um coinstalador específico do dispositivo, ele grava (ou modifica) uma entrada de valor CoInstallers32 nessa chave de "software" por dispositivo/driver acessível ao usuário.
Para um coinstalador específico de classe, ele registra os novos coinstaladores modificando o conteúdo das subchaves ..CoDeviceInstallers\SetupClassGUID apropriadas. O caminho das subchaves SetupClassGUID apropriadas do registro deve ser especificado explicitamente nas seções add-registry referenciadas.
Para mais informações, consulte Diretiva de AddReg do INF.
CopyFiles=@filename | file-list-section*[,file-list-section]...
Transfere os arquivos do coinstalador de origem para o destino no computador de destino, geralmente referenciando uma ou mais file-list-sections definidas pelo gravador de INF em outro lugar no arquivo INF. Essa seção file-list especifica os arquivos do coinstalador a serem copiados da mídia de origem para o diretório de destino no destino.
No entanto, os arquivos INF do sistema que instalam coinstaladores nunca usam essa diretiva em uma seção DDInstall.CoInstallers.
Para mais informações, consulte Diretiva de CopyFiles do INF.
Include=filename.inf[,filename2.inf]...
Especifica um ou mais arquivos INF fornecidos pelo sistema que contêm seções necessárias para instalar os coinstaladores para este dispositivo ou classe de configuração do dispositivo. Um arquivo INF com essa entrada geralmente deve especificar Needs.
Needs=inf-section-name[,inf-section-name]...
Especifica as seções específicas que devem ser processadas durante a instalação deste dispositivo. Normalmente, essa seção específica é uma seção DDInstall.CoInstallers dentro de um arquivo INF fornecido pelo sistema que está listado em uma entrada Include. No entanto, pode ser qualquer seção referenciada em tal seção DDInstall.CoInstallers do INF incluído.
DelFiles=file-list-section[,file-list-section]...
Faz referência a uma seção file-list que especifica os arquivos a serem removidos do destino. Esta diretiva raramente é usada.
Para mais informações, consulte Diretiva de DelFiles do INF.
RenFiles=file-list-section[,file-list-section]...
Faz referência a uma seção file-list especificando arquivos no destino a serem renomeados antes que os arquivos de origem do coinstalador sejam copiados para o destino. Esta diretiva também é raramente usada.
Para mais informações, consulte Diretiva de RenFiles do INF.
DelReg=del-registry-section[,del-registry-section]...
Faz referência a uma ou mais delete-registry-sections definidas pelo gravador do INF. Essa seção especifica informações obsoletas do registro sobre os coinstaladores para uma instalação anterior dos mesmos dispositivos que devem ser removidos do registro. Um HKR especificado em uma seção delete-registry designa a mesma subchave do registro já descrita para a entrada AddReg. Essa diretiva é raramente usada em uma seção DDInstall.CoInstallers.
Para mais informações, consulte Diretiva de DelReg do INF.
BitReg=bit-registry-section[,bit-registry-section]...
Esta entrada é válida nesta seção, mas quase nunca usada. Um HKR especificado nessa seção bit-registry designa a mesma subchave do registro já descrita para a entrada AddReg.
Para mais informações, consulte Diretiva de BitReg do INF.
UpdateInis=update-ini-section[,update-ini-section]...
Esta entrada é válida nesta seção, mas quase nunca usada.
Para mais informações, consulte Diretiva INF UpdateInis.
UpdateIniFields=update-inifields-section[,update-inifields-section]...
Esta entrada é válida nesta seção, mas quase nunca usada.
Para mais informações, consulte Diretiva de UpdateIniFields do INF.
Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...
Esta entrada é válida nesta seção, mas quase nunca usada.
Para mais informações, consulte Diretiva de Ini2Reg do INF.
Comentários
A seção DDInstall especificada deve ser referenciada em uma entrada específica do dispositivo/modelos na seção Models por fabricante do arquivo INF.
Se um INF incluir um DDInstall.Coinstallers, deve haver um para cada seção DDInstall decorada e não decorada na plataforma. Por exemplo, se um INF contiver uma seção [install-section-name.ntx86] e uma seção [install-section-name] e registrar coinstaladores específicos do dispositivo, o INF deverá incluir uma seção [install-section-name.ntx86.Coinstallers] e uma seção [install-section-name.Coinstallers]. Para mais informações sobre como usar as extensões definidas pelo sistema .nt, .ntx86, .ntia64, .ntamd64, .ntarm e .ntarm64, consulte Como criar arquivos INF para várias plataformas e sistemas operacionais.
Cada diretiva em uma seção DDInstall.CoInstallers pode fazer referência a mais de um nome de seção definido pelo INF-writer. No entanto, cada seção nomeada adicional deve ser separada da próxima com uma vírgula (,).
Cada nome de seção directive-created deve ser exclusivo dentro do arquivo INF e deve seguir as regras gerais para definir nomes de seção. Para mais informações sobre essas regras, consulte Regras gerais de sintaxe para arquivos INF.
Um coinstalador é uma DLL Win32 que normalmente grava informações de configuração extras no registro ou executa outras tarefas de instalação que exigem informações específicas do sistema geradas dinamicamente que não estão disponíveis quando um INF é criado. Um coinstalador específico do dispositivo complementa as operações de instalação do instalador do dispositivo do sistema operacional ou do instalador de classe apropriado quando esse dispositivo é instalado.
Para obter mais informações sobre como escrever e usar coinstaladores, consulte Escrever um coinstalador.
Instalar imagens do coinstalador
Todos os arquivos do coinstalador devem ser copiados para o diretório %SystemRoot%\system32. Como qualquer operação CopyFiles do INF, o destino é controlado explicitamente para um file-list-section nomeado na seção DestinationDirs do arquivo INF pelo valor dirid 11 ou fornecendo este valor dirid para a entrada DefaultDestDir.
Registrar coinstaladores específicos do dispositivo
O registro de um ou mais coinstaladores específicos do dispositivo requer a adição de uma entrada de valor do tipo REG_MULTI_SZ ao registro. Especifique uma seção add-registry-section referenciada pela diretiva AddReg usando o seguinte formulário geral:
[DDInstall.CoInstallers_DeviceAddReg]
HKR,,CoInstallers32,0x00010000,"DevSpecificCoInstall.dll
[,DevSpecificEntryPoint]"[,"DevSpecific2CoInstall.dll
[,DevSpecific2EntryPoint]"...]
A entrada HKR é listada como uma única linha dentro do arquivo INF, e cada DLL do coinstalador específica do dispositivo fornecido deve ter um nome único. Depois que os coinstaladores listados são registrados, o instalador do dispositivo do sistema os chama em cada etapa subsequente do processo de instalação desse dispositivo.
Se o DevSpecificEntryPoint opcional for omitido, o nome da rotina CoDeviceInstall padrão será usado como o ponto de entrada da DLL do coinstalador.
Para obter mais informações, consulte Registrar um coinstalador específico do dispositivo.
Registrar coinstaladores de classe de dispositivo
Para adicionar uma entrada de valor (e uma subchave de classe de configuração, se ela ainda não existir) para um ou mais coinstaladores de classe de dispositivo ao registro, uma seção add-registry referenciada pela diretiva AddReg tem o seguinte formato geral:
[DDInstall.CoInstallers_ClassAddReg]
HKLM,System\CurrentControlSet\Control
\CoDeviceInstallers,{SetupClassGUID},
0x00010008,"DevClssCoInst.dll[,DevClssEntryPoint]"
...
Cada entrada em uma seção add-registry é listada como uma única linha dentro do arquivo INF, e cada DLL do coinstalador de classe fornecida deve ter um nome único. Se os coinstaladores fornecidos devem ser usados para mais de uma classe de instalação de dispositivo, essa seção add-registry pode ter mais de uma entrada, cada uma com o valor SetupClassGUID apropriado.
Esse coinstalador de classe de dispositivo suplementar não deve substituir nenhum coinstalador já registrado por um instalador de classe existente. Portanto, o coinstalador de classe deve ter um nome exclusivo, e o valor do tipo REG_MULTI_SZ fornecido deve ser acrescentado (conforme indicado pelo 8 no valor flags 0x0010008) às entradas de coinstalador específicas da classe, se houver, já presentes na subchave {SetupClassGUID}.
Observação
As funções SetupAPI nunca acrescentam uma DevClssCoInstall.dll duplicada a uma entrada de valor se um coinstalador com o mesmo nome já estiver registrado.
O INF de um coinstalador de classe de dispositivo suplementar pode ser ativado por uma instalação com o botão direito do mouse ou por meio de uma chamada para SetupInstallFromInfSection feita por um aplicativo de instalação de dispositivo.
Exemplos
Este exemplo mostra a seção DDInstall.CoInstallers para adaptadores de rede serial IrDA. O INF fornecido pelo sistema para essas NICs IrDA (seriais) fornece um coinstalador para o instalador da classe IrDA do 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."
A seção anterior PNP.NT.CoInstallers só fazia referência a uma seção add-registry específica do coinstalador.
Ela não tem nenhuma diretiva CopyFiles porque esse INF fornecido pelo sistema instala um conjunto de dispositivos de rede IrDA. Como todos os arquivos INF do sistema, esse arquivo INF usa a entrada LayoutFile em sua seção Version para transferir o arquivo do coinstalador para o destino.
Qualquer seção DDInstall.CoInstallers em um INF fornecido por um IHV ou OEM requer uma diretiva CopyFiles e também as seções SourceDisksNames e SourceDisksFiles.