Diretiva CopyFiles do INF

Uma diretiva CopyFiles pode fazer um dos seguintes procedimentos:

  • Faça com que um único arquivo seja copiado da mídia de origem para o diretório de destino padrão.

  • Referencie uma ou mais seções definidas pelo gravador INF no INF que especificam uma lista de arquivos a serem copiados da mídia de origem para o destino.

[DDInstall] | 
[DDInstall.CoInstallers] | 
[ClassInstall32] | 
[ClassInstall32.ntx86] | 
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows)
[ClassInstall32.ntarm64] (Windows 10 version 1709 and later versions of Windows)
  
CopyFiles=@filename | file-list-section[, file-list-section]... 

Uma diretiva CopyFiles pode ser especificada em qualquer uma das seções mostradas na instrução de sintaxe formal. Essa diretiva também pode ser especificada em qualquer uma das seguintes seções INF:

Cada seção nomeada referenciada por uma diretiva CopyFiles tem uma ou mais entradas do seguinte formulário:

[file-list-section]
destination-file-name[,[source-file-name][,[unused][,flag]]]
...

Uma seção file-list definida pelo gravador INF pode ter qualquer número de entradas, cada uma em uma linha separada.

Cada seção de lista de arquivos pode ter uma seção opcional e associada file-list-section.security do seguinte formulário:

[file-list-section.security]
"security-descriptor-string"

Entradas

destination-file-name
Especifica o nome do arquivo de destino. Se nenhum nome de arquivo de origem for fornecido, essa especificação também será o nome do arquivo de origem.

source-file-name
Especifica o nome do arquivo de origem. Se os nomes de arquivo de origem e de destino para a operação de cópia de arquivo forem iguais, source-file-name poderá ser omitido.

unused
Essa entrada não tem mais suporte no Windows 2000 e versões posteriores do Windows.

flag
Esses sinalizadores opcionais, expressos em notação hexadecimal ou como um valor decimal em uma entrada de seção, podem ser usados para controlar como (ou se) um arquivo de origem específico é copiado para o destino. Um ou mais valores (ORed) para os sinalizadores definidos pelo sistema a seguir podem ser especificados. No entanto, alguns desses sinalizadores são mutuamente exclusivos:

0x00000001 (COPYFLG_WARN_IF_SKIP)
Envie um aviso se o usuário optar por não copiar um arquivo. Esse sinalizador e o próximo são mutuamente exclusivos e ambos são irrelevantes para arquivos INF assinados digitalmente.

0x00000002 (COPYFLG_NOSKIP)
Não permita que o usuário ignore a cópia de um arquivo. Esse sinalizador será implícito se o pacote de driver for assinado.

0x00000004 (COPYFLG_NOVERSIONCHECK)
Ignore as versões de arquivo e escreva sobre arquivos existentes no diretório de destino. Esse sinalizador e os próximos dois são mutuamente exclusivos. Esse sinalizador é irrelevante para arquivos INF assinados digitalmente.

0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
Forçar o comportamento de arquivo em uso: não copie um arquivo existente com o mesmo nome se ele estiver aberto no momento. Em vez disso, copie o arquivo de origem fornecido com um nome temporário para que ele possa ser renomeado e usado quando a próxima reinicialização ocorrer.

0x00000010 (COPYFLG_NO_OVERWRITE)
Não substitua um arquivo existente no diretório de destino por um arquivo de origem com o mesmo nome. Esse sinalizador não pode ser combinado com nenhum outro sinalizador.

0x00000020 (COPYFLG_NO_VERSION_DIALOG)
Não escreva em um arquivo no diretório de destino com o arquivo de origem se o arquivo existente for mais recente que o arquivo de origem.

O marcar mais recente é feito usando a versão do arquivo, conforme extraído do recurso de versão do arquivo VS_VERSIONINFO. Para obter mais informações, consulte Informações de versão. Se o arquivo de destino não for uma imagem executável ou de recurso ou o arquivo não contiver informações de versão do arquivo, a instalação do dispositivo pressupõe que o arquivo de destino seja mais antigo.

0x00000040 (COPYFLG_OVERWRITE_OLDER_ONLY)
Copie o arquivo de origem para o diretório de destino somente se o arquivo no destino for substituído por uma versão mais recente. Esse sinalizador é irrelevante para arquivos INF assinados digitalmente. A versão marcar usa o mesmo procedimento descrito acima em COPYFLG_NO_VERSION_DIALOG.

0x00000400 (COPYFLG_REPLACEONLY)
Copie o arquivo de origem para o diretório de destino somente se o arquivo já estiver presente no diretório de destino.

0x00000800 (COPYFLG_NODECOMP) (Windows 7 e posterior)
Copie o arquivo de origem para o diretório de destino sem descompactar o arquivo de origem se ele for compactado.

0x00001000 (COPYFLG_REPLACE_BOOT_FILE)
Esse arquivo é exigido pelo carregador do sistema. O sistema solicitará que o usuário reinicie o sistema.

0x00002000 (COPYFLG_NOPRUNE)
Não exclua essa operação como resultado da otimização.

Por exemplo, o Windows pode determinar que a operação de cópia de arquivo não é necessária porque o arquivo já existe. No entanto, o gravador do INF sabe que a operação é necessária e orienta o Windows a substituir sua otimização e executar a operação de arquivo.

Esse sinalizador pode ser usado para garantir que os arquivos sejam copiados se eles também forem especificados em uma diretiva INF DelFiles ou em uma diretiva RenFiles do INF.

0x00004000 (COPYFLG_IN_USE_RENAME)
Se o arquivo de origem não puder ser copiado porque o arquivo de destino está sendo usado, renomeie o arquivo de destino e copie o arquivo de origem para o arquivo de destino e exclua o arquivo de destino renomeado. Se o arquivo de destino não puder ser renomeado, conclua a operação de cópia durante a próxima reinicialização do sistema. Se o arquivo de destino renomeado não puder ser excluído, exclua o arquivo de destino renomeado durante a próxima reinicialização do sistema.

security-descriptor-string
Especifica um descritor de segurança, a ser aplicado a todos os arquivos copiados pela seção de lista de arquivos nomeada. A cadeia de caracteres de descritor de segurança é uma cadeia de caracteres com tokens para indicar o componente de segurança DACL (D:).

Para obter informações sobre cadeias de caracteres de descritor de segurança, consulte Linguagem de definição do descritor de segurança (Windows).

Se uma seção file-list-section.security não for especificada, os arquivos herdarão as características de segurança do diretório no qual os arquivos são copiados.

Se uma seção file-list-section.security for especificada, as seguintes ACE deverão ser incluídas para que instalações e atualizações de dispositivos e service packs do sistema possam ocorrer:

  • (A;; GA;;; SY) – concede a todos os acessos ao sistema local.

  • (A;; GA;;; BA) – concede a todos os acessos a administradores internos.

Não especifique cadeias de caracteres ACE que concedem acesso de gravação a usuários nãoprivilegiados.

Para obter mais informações sobre como especificar descritores de segurança, consulte Criando instalações de dispositivo seguro.

Comentários

O Windows só copia um pacote de driver para seu local de destino como parte de uma instalação de driver se o arquivo tiver uma diretiva CopyFiles inf. Quando copia arquivos, o sistema operacional gera automaticamente nomes de arquivo temporários, quando necessário, e renomeia os arquivos de origem copiados na próxima vez que o sistema operacional for iniciado.

O gravador de arquivos INF também deve fornecer especificações de caminho para arquivos copiados da mídia de origem usando a seção SourceDisksNames do INF e a seção SourceDisksFiles do INF para especificar explicitamente o caminho de cada arquivo de origem em relação ao arquivo INF na mídia de origem.

O destino das operações de cópia é controlado pela seção DestinationDirs do INF. Esta seção controla o destino de todas as operações de cópia de arquivo, da seguinte maneira:

  • Se uma seção nomeada referenciada por uma diretiva CopyFiles tiver uma entrada correspondente na seção DestinationDirs do mesmo INF, essa entrada especifica explicitamente o diretório de destino de destino no qual todos os arquivos listados na seção nomeada são copiados. Se a seção nomeada não estiver listada na seção DestinationDirs , o Windows usará a entrada DefaultDestDir na seção DestinationDirs do arquivo INF.

  • Se uma diretiva CopyFiles usar a @ sintaxe filename, o Windows usará a entrada DefaultDestDir na seção DestinationDirs do arquivo INF.

Os seguintes pontos se aplicam à diretiva CopyFiles do INF:

  • Cada nome de lista de arquivos deve ser exclusivo para o arquivo INF, mas pode ser referenciado pelas diretivas CopyFiles, DelFiles ou RenFiles em outro lugar no mesmo arquivo INF. O nome da seção deve seguir as regras gerais descritas em Regras gerais de sintaxe para arquivos INF.

  • Os nomes de arquivo especificados nas @ entradas filename ou file-list-section devem ser o nome exato de um arquivo na mídia de origem. Você não pode usar um token %strkey% para especificar o nome do arquivo. Para obter mais informações sobre tokens %strkey%, consulte Seção Cadeias de caracteres INF.

  • A diretiva CopyFiles não dá suporte à decoração de um nome de seção de lista de arquivos com uma extensão de plataforma definida pelo sistema (.nt, .ntx86, .ntia64 ou .ntamd64).

  • Não use diretivas CopyFiles para copiar arquivos INF. Para obter mais informações, consulte Copiando arquivos INF.

A partir do Windows Vista, os seguintes pontos também se aplicam à diretiva CopyFiles do INF:

  • Quando um pacote de driver é preparado no repositório de driver, um arquivo só é copiado da origem do pacote de driver para o repositório de driver se o arquivo tiver uma diretiva COPYFiles inf correspondente.

  • Como parte de uma atualização do Windows, o Windows copia apenas um arquivo de pacote de driver para o repositório de driver como parte de uma migração de driver se o arquivo tiver uma diretiva CopyFiles inf.

Exemplos

Este exemplo mostra como as seções SourceDisksNames, SourceDisksFiles e DestinationDirs especificam os caminhos para operações de arquivo de cópia que ocorrem no processamento de um INF de driver de dispositivo simples.

[SourceDisksNames]
1 = %Floppy_Description%,,,\WinNT

[SourceDisksFiles.x86]
aha154x.sys = 2,\x86 ; on distribution disk 2, in subdir \WinNT\x86

[DestinationDirs]
DefaultDestDir = 13

; ... Manufacturer and Models sections omitted here

[AHA154X.NTx86]
CopyFiles=@AHA154x.SYS 
; ... some other directives and sections omitted here
; ...

Para obter exemplos adicionais de como usar a diretiva CopyFiles do INF, consulte os arquivos INF para os exemplos de driver de dispositivo incluídos no diretório src do WDK (Windows Driver Kit).

Confira também

Addinterface

ClassInstall32

DDInstall

DDInstall. Interfaces

DelFiles

DestinationDirs

InterfaceInstall32

RenFiles

SourceDisksFiles

SourceDisksNames

Strings

Versão