Direttiva INF CopyFiles

Una direttiva CopyFiles può eseguire una delle operazioni seguenti:

  • Fare in modo che un singolo file venga copiato dal supporto di origine alla directory di destinazione predefinita.

  • Fare riferimento a una o più sezioni definite dal writer INF nell'INF che specificano un elenco di file da copiare dal supporto di origine alla destinazione.

[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]... 

È possibile specificare una direttiva CopyFiles all'interno di una delle sezioni illustrate nell'istruzione di sintassi formale. Questa direttiva può essere specificata anche all'interno di una delle sezioni INF seguenti:

Ogni sezione denominata a cui fa riferimento una direttiva CopyFiles include una o più voci del formato seguente:

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

Una sezione file-list-defined inF-writer può avere un numero qualsiasi di voci, ognuna in una riga separata.

Ogni sezione file-list-section può avere una sezione facoltativa e associata file-list-section.security nel formato seguente:

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

Voci

destination-file-name
Specifica il nome del file di destinazione. Se non viene specificato alcun nome file di origine , questa specifica è anche il nome del file di origine.

source-file-name
Specifica il nome del file di origine. Se i nomi dei file di origine e di destinazione per l'operazione di copia file sono uguali, è possibile omettere source-file-name .

Inutilizzati
Questa voce non è più supportata in Windows 2000 e versioni successive di Windows.

flag
Questi flag facoltativi, espressi in notazione esadecimale o come valore decimale in una voce di sezione, possono essere usati per controllare come (o se) un determinato file di origine viene copiato nella destinazione. È possibile specificare uno o più valori (ORed) per i flag definiti dal sistema seguenti. Tuttavia, alcuni di questi flag si escludono a vicenda:

0x00000001 (COPYFLG_WARN_IF_SKIP)
Inviare un avviso se l'utente sceglie di non copiare un file. Questo flag e il successivo si escludono a vicenda e entrambi sono irrilevanti per i file INF firmati digitalmente.

0x00000002 (COPYFLG_NOSKIP)
Non consentire all'utente di ignorare la copia di un file. Questo flag è implicito se il pacchetto driver è firmato.

0x00000004 (COPYFLG_NOVERSIONCHECK)
Ignorare le versioni dei file e scrivere su file esistenti nella directory di destinazione. Questo flag e i due successivi si escludono a vicenda. Questo flag è irrilevante per i file INF con firma digitale.

0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
Forzare il comportamento di utilizzo dei file: non copiare su un file esistente con lo stesso nome se è attualmente aperto. Copiare invece il file di origine specificato con un nome temporaneo in modo che possa essere rinominato e usato quando si verifica il riavvio successivo.

0x00000010 (COPYFLG_NO_OVERWRITE)
Non sostituire un file esistente nella directory di destinazione con un file di origine con lo stesso nome. Questo flag non può essere combinato con altri flag.

0x00000020 (COPYFLG_NO_VERSION_DIALOG)
Non scrivere su un file nella directory di destinazione con il file di origine se il file esistente è più recente del file di origine.

Il controllo più recente viene eseguito usando la versione del file, come estratto dalla risorsa della versione del file VS_VERSIONINFO. Per altre info, vedi Informazioni sulla versione. Se il file di destinazione non è un'immagine eseguibile o di risorsa o il file non contiene informazioni sulla versione del file, l'installazione del dispositivo presuppone che il file di destinazione sia precedente.

0x00000040 (COPYFLG_OVERWRITE_OLDER_ONLY)
Copiare il file di origine nella directory di destinazione solo se il file nella destinazione viene sostituito da una versione più recente. Questo flag è irrilevante per i file INF con firma digitale. Il controllo della versione usa la stessa procedura descritta in precedenza in COPYFLG_NO_VERSION_DIALOG.

0x00000400 (COPYFLG_REPLACEONLY)
Copiare il file di origine nella directory di destinazione solo se il file è già presente nella directory di destinazione.

0x00000800 (COPYFLG_NODECOMP) (Windows 7 e versioni successive)
Copiare il file di origine nella directory di destinazione senza decomprimere il file di origine se è compresso.

0x00001000 (COPYFLG_REPLACE_BOOT_FILE)
Questo file è richiesto dal caricatore di sistema. Il sistema richiederà all'utente di riavviare il sistema.

0x00002000 (COPYFLG_NOPRUNE)
Non eliminare questa operazione in seguito all'ottimizzazione.

Ad esempio, Windows potrebbe determinare che l'operazione di copia file non è necessaria perché il file esiste già. Tuttavia, il writer dell'INF sa che l'operazione è necessaria e indirizza Windows a eseguire l'override dell'ottimizzazione ed eseguire l'operazione di file.

Questo flag può essere usato per assicurarsi che i file vengano copiati se vengono specificati anche in una direttiva INF DelFiles o in una direttiva INF RenFiles .

0x00004000 (COPYFLG_IN_USE_RENAME)
Se non è possibile copiare il file di origine perché viene usato il file di destinazione, rinominare il file di destinazione, copiare il file di origine nel file di destinazione ed eliminare il file di destinazione rinominato. Se il file di destinazione non può essere rinominato, completare l'operazione di copia durante il successivo riavvio del sistema. Se il file di destinazione rinominato non può essere eliminato, eliminare il file di destinazione rinominato durante il successivo riavvio del sistema.

security-descriptor-string
Specifica un descrittore di sicurezza da applicare a tutti i file copiati dalla sezione denominata file-list-section. Security-descriptor-string è una stringa con token per indicare il componente di sicurezza DACL (D:).

Per informazioni sulle stringhe del descrittore di sicurezza, vedere Security Descriptor Definition Language (Windows).

Se non viene specificata una sezione file-list-section.security, i file ereditano le caratteristiche di sicurezza della directory in cui vengono copiati i file.

Se viene specificata una sezione file-list-section.security, è necessario includere l'ACE seguente in modo che possano verificarsi installazioni e aggiornamenti di dispositivi e Service Pack di sistema:

  • (A;; GA;;; SY) — Concede l'accesso a tutto il sistema locale.

  • (A;; GA;;; BA) − Concede l'accesso a tutti gli amministratori predefiniti.

Non specificare stringhe ACE che concedono l'accesso in scrittura agli utenti senza privilegi.

Per altre informazioni su come specificare i descrittori di sicurezza, vedere Creazione di installazioni di dispositivi protetti.

Commenti

Windows copia un pacchetto driver solo nel percorso di destinazione come parte di un'installazione del driver se il file dispone di una direttiva INF CopyFiles . Quando copia i file, il sistema operativo genera automaticamente nomi di file temporanei, quando necessario e rinomina i file di origine copiati alla successiva avvio del sistema operativo.

Il writer di file INF deve inoltre specificare le specifiche del percorso per i file copiati dai supporti di origine usando la sezione INF SourceDisksNames e la sezione INF SourceDisksFiles per specificare in modo esplicito il percorso di ogni file di origine relativo al file INF nel supporto di origine.

La destinazione delle operazioni di copia è controllata dalla sezione INF DestinationDirs. Questa sezione controlla la destinazione per tutte le operazioni di copia file, come indicato di seguito:

  • Se una sezione denominata a cui fa riferimento una direttiva CopyFiles ha una voce corrispondente nella sezione DestinationDirs della stessa inF, tale voce specifica in modo esplicito la directory di destinazione in cui vengono copiati tutti i file elencati nella sezione denominata. Se la sezione denominata non è elencata nella sezione DestinationDirs , Windows usa la voce DefaultDestDir nella sezione DestinationDirs del file INF.

  • Se una direttiva CopyFiles utilizza la sintassi del @nome file , Windows usa la voce DefaultDestDir nella sezione DestinationDirs del file INF.

I punti seguenti si applicano alla direttiva INF CopyFiles :

  • Ogni nome di sezione file-list deve essere univoco per il file INF, ma può essere fatto riferimento dalle direttive CopyFiles, DelFiles o RenFiles altrove nello stesso file INF. Il nome della sezione deve seguire le regole generali descritte in Regole di sintassi generali per i file INF.

  • I nomi di file specificati nelle @ voci nome file o file-list-section devono essere il nome esatto di un file nel supporto di origine. Non è possibile utilizzare un token %strkey% per specificare il nome del file. Per altre informazioni sui token %strkey%, vedere la sezione Stringhe INF.

  • La direttiva CopyFiles non supporta la decorazione di un nome di sezione file-list con un'estensione della piattaforma definita dal sistema (.nt, .ntx86, .ntia64 o .ntamd64).

  • Non usare le direttive CopyFiles per copiare i file INF. Per altre informazioni, vedere Copia di file INF.

A partire da Windows Vista, i punti seguenti si applicano anche alla direttiva INF CopyFiles :

  • Quando un pacchetto driver viene eseguito in staging nell'archivio driver, un file viene copiato solo dall'origine del pacchetto driver all'archivio driver se il file ha una direttiva INF CopyFiles corrispondente.

  • Come parte di un aggiornamento di Windows, Windows copia solo un file di pacchetto driver nell'archivio driver come parte di una migrazione del driver se il file ha una direttiva COPYFiles INF.

Esempio

In questo esempio viene illustrato il modo in cui le sezioni SourceDisksNames, SourceDisksFiles e DestinationDirs specificano i percorsi per le operazioni di copia-file che si verificano nell'elaborazione di un semplice driver di dispositivo INF.

[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
; ...

Per altri esempi di come usare la direttiva COPYFiles INF, vedere i file INF per gli esempi di driver di dispositivo inclusi nella directory src di Windows Driver Kit (WDK).

Vedi anche

AddInterface

ClassInstall32

DDInstall

DDInstall. Interfacce

DelFiles

DestinationDirs

InterfaceInstall32

RenFiles

SourceDisksFiles

SourceDisksNames

Stringhe

Versione