Directive INF CopyFiles

Une directive CopyFiles peut effectuer l’une des opérations suivantes :

  • Provoquer la copie d’un seul fichier à partir du média source vers le répertoire de destination par défaut.

  • Référencez une ou plusieurs sections définies par un enregistreur INF dans l’INF qui spécifient chacune une liste de fichiers à copier à partir du média source vers la destination.

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

Une directive CopyFiles peut être spécifiée dans l’une des sections indiquées dans l’instruction de syntaxe formelle. Cette directive peut également être spécifiée dans l’une des sections INF suivantes :

Chaque section nommée référencée par une directive CopyFiles a une ou plusieurs entrées de la forme suivante :

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

Un fichier-list-section défini par un enregistreur INF peut avoir n’importe quel nombre d’entrées, chacune sur une ligne distincte.

Chaque section de liste de fichiers peut avoir une section facultative associée file-list-section.security au format suivant :

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

Entrées

destination-file-name
Spécifie le nom du fichier de destination. Si aucun nom de fichier source n’est donné, cette spécification est également le nom du fichier source.

source-file-name
Spécifie le nom du fichier source. Si les noms de fichiers source et de destination pour l’opération de copie de fichier sont identiques, vous pouvez omettre nom-fichier source .

Inutilisés
Cette entrée n’est plus prise en charge dans Windows 2000 et versions ultérieures de Windows.

flag
Ces indicateurs facultatifs, exprimés en notation hexadécimale ou en tant que valeur décimale dans une entrée de section, peuvent être utilisés pour contrôler la façon dont (ou si) un fichier source particulier est copié dans la destination. Une ou plusieurs valeurs (ORed) pour les indicateurs définis par le système suivants peuvent être spécifiées. Toutefois, certains de ces indicateurs s’excluent mutuellement :

0x00000001 (COPYFLG_WARN_IF_SKIP)
Envoyez un avertissement si l’utilisateur choisit de ne pas copier un fichier. Cet indicateur et le suivant s’excluent mutuellement, et les deux ne sont pas pertinents pour les fichiers INF signés numériquement.

0x00000002 (COPYFLG_NOSKIP)
N’autorisez pas l’utilisateur à ignorer la copie d’un fichier. Cet indicateur est implicite si le package de pilotes est signé.

0x00000004 (COPYFLG_NOVERSIONCHECK)
Ignorez les versions de fichiers et écrivez sur des fichiers existants dans le répertoire de destination. Cet indicateur et les deux suivants s’excluent mutuellement. Cet indicateur n’est pas pertinent pour les fichiers INF signés numériquement.

0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
Forcer le comportement du fichier en cours d’utilisation : ne copiez pas sur un fichier existant du même nom s’il est actuellement ouvert. Au lieu de cela, copiez le fichier source donné avec un nom temporaire afin qu’il puisse être renommé et utilisé lors du redémarrage suivant.

0x00000010 (COPYFLG_NO_OVERWRITE)
Ne remplacez pas un fichier existant dans le répertoire de destination par un fichier source du même nom. Cet indicateur ne peut pas être combiné avec d’autres indicateurs.

0x00000020 (COPYFLG_NO_VERSION_DIALOG)
N’écrivez pas sur un fichier dans le répertoire de destination avec le fichier source si le fichier existant est plus récent que le fichier source.

La case activée la plus récente est effectuée à l’aide de la version du fichier, telle qu’extraite de la ressource de version de fichier VS_VERSIONINFO. Pour plus d’informations, consultez Informations sur la version. Si le fichier cible n’est pas un fichier exécutable ou une image de ressource, ou s’il ne contient pas d’informations sur la version du fichier, l’installation de l’appareil suppose que le fichier cible est plus ancien.

0x00000040 (COPYFLG_OVERWRITE_OLDER_ONLY)
Copiez le fichier source dans le répertoire de destination uniquement si le fichier sur la destination est remplacé par une version plus récente. Cet indicateur n’est pas pertinent pour les fichiers INF signés numériquement. La version case activée utilise la même procédure que celle décrite ci-dessus dans COPYFLG_NO_VERSION_DIALOG.

0x00000400 (COPYFLG_REPLACEONLY)
Copiez le fichier source dans le répertoire de destination uniquement si le fichier est déjà présent dans le répertoire de destination.

0x00000800 (COPYFLG_NODECOMP) (Windows 7 et versions ultérieures)
Copiez le fichier source dans le répertoire de destination sans décompresser le fichier source s’il est compressé.

0x00001000 (COPYFLG_REPLACE_BOOT_FILE)
Ce fichier est requis par le chargeur système. Le système invite l’utilisateur à redémarrer le système.

0x00002000 (COPYFLG_NOPRUNE)
Ne supprimez pas cette opération à la suite de l’optimisation.

Par exemple, Windows peut déterminer que l’opération de copie de fichier n’est pas nécessaire, car le fichier existe déjà. Toutefois, l’enregistreur de l’INF sait que l’opération est requise et demande à Windows de remplacer son optimisation et d’effectuer l’opération de fichier.

Cet indicateur peut être utilisé pour s’assurer que les fichiers sont copiés s’ils sont également spécifiés dans une directive Inf DelFiles ou une directive INF RenFiles .

0x00004000 (COPYFLG_IN_USE_RENAME)
Si le fichier source ne peut pas être copié parce que le fichier de destination est utilisé, renommez le fichier de destination, copiez le fichier source dans le fichier de destination et supprimez le fichier de destination renommé. Si le fichier de destination ne peut pas être renommé, effectuez l’opération de copie lors du prochain redémarrage du système. Si le fichier de destination renommé ne peut pas être supprimé, supprimez le fichier de destination renommé lors du prochain redémarrage du système.

security-descriptor-string
Spécifie un descripteur de sécurité à appliquer à tous les fichiers copiés par la section file-list nommée. Security-descriptor-string est une chaîne avec des jetons pour indiquer le composant de sécurité DACL (D :).

Pour plus d’informations sur les chaînes de descripteur de sécurité, consultez Security Descriptor Definition Language (Windows).

Si aucune section file-list-section.securityn’est spécifiée, les fichiers héritent des caractéristiques de sécurité du répertoire dans lequel les fichiers sont copiés.

Si une section file-list-section.security est spécifiée, les ACE suivants doivent être inclus afin que les installations et les mises à niveau des appareils et des Service Packs système puissent se produire :

  • (A ;; GA;;; SY) - Accorde tout l’accès au système local.

  • (A ;; GA;;; BA) - Accorde tout l’accès aux administrateurs intégrés.

Ne spécifiez pas de chaînes ACE qui accordent l’accès en écriture aux utilisateurs non privilégiés.

Pour plus d’informations sur la façon de spécifier des descripteurs de sécurité, consultez Création d’installations d’appareils sécurisées.

Remarques

Windows copie uniquement un package de pilotes vers son emplacement de destination dans le cadre d’une installation de pilote si le fichier a une directive CopyFiles INF. Lorsqu’il copie des fichiers, le système d’exploitation génère automatiquement des noms de fichiers temporaires, si nécessaire, et renomme les fichiers sources copiés la prochaine fois que le système d’exploitation est démarré.

L’enregistreur de fichiers INF doit également fournir des spécifications de chemin d’accès pour les fichiers qui sont copiés à partir du média source source à l’aide de la section INF SourceDisksNames et de la section INF SourceDisksFiles pour spécifier explicitement le chemin d’accès de chaque fichier source par rapport au fichier INF dans le média source.

La destination des opérations de copie est contrôlée par la section INF DestinationDirs. Cette section contrôle la destination de toutes les opérations de copie de fichiers, comme suit :

  • Si une section nommée référencée par une directive CopyFiles a une entrée correspondante dans la section DestinationDirs du même INF, cette entrée spécifie explicitement le répertoire de destination cible dans lequel tous les fichiers répertoriés dans la section nommée sont copiés. Si la section nommée n’est pas répertoriée dans la section DestinationDirs , Windows utilise l’entrée DefaultDestDir dans la section DestinationDirs du fichier INF.

  • Si une directive CopyFiles utilise la syntaxe de @nom de fichier , Windows utilise l’entrée DefaultDestDir dans la section DestinationDirs du fichier INF.

Les points suivants s’appliquent à la directive INF CopyFiles :

  • Chaque nom de section de liste de fichiers doit être unique au fichier INF, mais il peut être référencé par les directives CopyFiles, DelFiles ou RenFiles ailleurs dans le même fichier INF. Le nom de la section doit suivre les règles générales décrites dans Règles de syntaxe générales pour les fichiers INF.

  • Les noms de fichiers spécifiés dans les @ entrées de nom de fichier ou de section de liste de fichiers doivent être le nom exact d’un fichier sur le média source. Vous ne pouvez pas utiliser un jeton %strkey% pour spécifier le nom de fichier. Pour plus d’informations sur les jetons %strkey%, consultez la section Chaînes INF.

  • La directive CopyFiles ne prend pas en charge la décoration d’un nom de section de liste de fichiers avec une extension de plateforme définie par le système (.nt, .ntx86, .ntia64 ou .ntamd64).

  • N’utilisez pas les directives CopyFiles pour copier des fichiers INF. Pour plus d’informations, consultez Copie de fichiers INF.

À compter de Windows Vista, les points suivants s’appliquent également à la directive Inf CopyFiles :

  • Lorsqu’un package de pilotes est intermédiaire dans le magasin de pilotes, un fichier n’est copié à partir de la source du package de pilotes vers le magasin de pilotes que si le fichier a une directive CopyFiles INF correspondante.

  • Dans le cadre d’une mise à niveau de Windows, Windows copie uniquement un fichier de package de pilotes dans le magasin de pilotes dans le cadre d’une migration de pilotes si le fichier a une directive CopyFiles INF.

Exemples

Cet exemple montre comment les sections SourceDisksNames, SourceDisksFilesFiles et DestinationDirs spécifient les chemins d’accès pour les opérations de copie de fichier qui se produisent dans le traitement d’un inf de pilote de périphérique simple.

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

Pour obtenir d’autres exemples d’utilisation de la directive Inf CopyFiles , consultez les fichiers INF pour les exemples de pilotes de périphérique inclus dans le répertoire src du Kit de pilotes Windows (WDK).

Voir aussi

AddInterface

ClassInstall32

DDInstall

DDInstall. Interfaces

DelFiles

DestinationDirs

InterfaceInstall32

RenFiles

SourceDisksFiles

SourceDisksNames

Cordes

Version