INF CopyFiles-Direktive

Eine CopyFiles-Direktive kann eine der folgenden Aktionen ausführen:

  • Bewirkt, dass eine einzelne Datei vom Quellmedium in das Standardzielverzeichnis kopiert wird.

  • Verweisen Sie auf mindestens einen inF-Writer definierten Abschnitt im INF, der jeweils eine Liste von Dateien angibt, die vom Quellmedium in das Ziel kopiert werden sollen.

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

Eine CopyFiles-Direktive kann in jedem der Abschnitte angegeben werden, die in der formalen Syntax-Anweisung angezeigt werden. Diese Direktive kann auch in einem der folgenden INF-Abschnitte angegeben werden:

Jeder benannte Abschnitt, auf den von einer CopyFiles-Direktive verwiesen wird, verfügt über einen oder mehrere Einträge der folgenden Form:

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

Ein inf writer-defined file-list-section kann eine beliebige Anzahl von Einträgen in einer separaten Zeile enthalten.

Jeder file-list-section kann einen optionalen, zugeordneten file-list-section.security-Abschnitt der folgenden Form aufweisen:

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

Einträge

Name der Zieldatei
Gibt den Namen der Zieldatei an. Wenn kein Quelldateiname angegeben wird, ist diese Spezifikation auch der Name der Quelldatei.

Name der Quelldatei
Gibt den Namen der Quelldatei an. Wenn der Quell- und der Zieldateiname für den Dateikopiervorgang identisch sind, kann source-file-name weggelassen werden.

Unbenutzte
Dieser Eintrag wird in Windows 2000 und höheren Versionen von Windows nicht mehr unterstützt.

flag
Diese optionalen Flags, ausgedrückt in hexadezimaler Notation oder als Dezimalwert in einem Abschnittseintrag, können verwendet werden, um zu steuern, wie (oder ob) eine bestimmte Quelldatei in das Ziel kopiert wird. Mindestens ein Wert (ORed) für die folgenden systemdefinierten Flags kann angegeben werden. Einige dieser Flags schließen sich jedoch gegenseitig aus:

0x00000001 (COPYFLG_WARN_IF_SKIP)
Senden Sie eine Warnung, wenn der Benutzer sich dafür entscheidet, eine Datei nicht zu kopieren. Dieses Flag und das nächste Flag schließen sich gegenseitig aus, und beide sind irrelevant für INF-Dateien, die digital signiert sind.

0x00000002 (COPYFLG_NOSKIP)
Lassen Sie dem Benutzer nicht zu, das Kopieren einer Datei zu überspringen. Dieses Flag wird impliziert, wenn das Treiberpaket signiert ist.

0x00000004 (COPYFLG_NOVERSIONCHECK)
Ignorieren Sie Dateiversionen, und schreiben Sie vorhandene Dateien im Zielverzeichnis. Dieses Flag und die nächsten beiden schließen sich gegenseitig aus. Dieses Flag ist für digital signierte INF-Dateien irrelevant.

0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
Verhalten bei verwendungsbasierter Datei erzwingen: Kopieren Sie keine vorhandene Datei mit demselben Namen, wenn sie derzeit geöffnet ist. Kopieren Sie stattdessen die angegebene Quelldatei mit einem temporären Namen, damit sie umbenannt und beim nächsten Neustart verwendet werden kann.

0x00000010 (COPYFLG_NO_OVERWRITE)
Ersetzen Sie eine vorhandene Datei im Zielverzeichnis nicht durch eine Quelldatei mit demselben Namen. Dieses Flag kann nicht mit anderen Flags kombiniert werden.

0x00000020 (COPYFLG_NO_VERSION_DIALOG)
Schreiben Sie keine Datei im Zielverzeichnis mit der Quelldatei, wenn die vorhandene Datei neuer als die Quelldatei ist.

Die neuere Überprüfung erfolgt mithilfe der Dateiversion, die aus der Ressource VS_VERSIONINFO Dateiversion extrahiert wurde. Weitere Informationen finden Sie unter Versionsinformationen. Wenn es sich bei der Zieldatei nicht um eine ausführbare Datei oder ein Ressourcenimage handelt oder die Datei keine Dateiversionsinformationen enthält, wird bei der Geräteinstallation davon ausgegangen, dass die Zieldatei älter ist.

0x00000040 (COPYFLG_OVERWRITE_OLDER_ONLY)
Kopieren Sie die Quelldatei nur dann in das Zielverzeichnis, wenn die Datei auf dem Ziel durch eine neuere Version ersetzt wird. Dieses Flag ist für digital signierte INF-Dateien irrelevant. Die Versionsprüfung verwendet dasselbe Verfahren wie oben in COPYFLG_NO_VERSION_DIALOG beschrieben.

0x00000400 (COPYFLG_REPLACEONLY)
Kopieren Sie die Quelldatei nur dann in das Zielverzeichnis, wenn die Datei bereits im Zielverzeichnis vorhanden ist.

0x00000800 (COPYFLG_NODECOMP) (Windows 7 und höher)
Kopieren Sie die Quelldatei in das Zielverzeichnis, ohne die Quelldatei zu dekomprimieren, wenn sie komprimiert ist.

0x00001000 (COPYFLG_REPLACE_BOOT_FILE)
Diese Datei ist vom Systemladeprogramm erforderlich. Das System fordert den Benutzer auf, das System neu zu starten.

0x00002000 (COPYFLG_NOPRUNE)
Löschen Sie diesen Vorgang nicht als Ergebnis der Optimierung.

Beispielsweise kann Windows feststellen, dass der Dateikopiervorgang nicht erforderlich ist, da die Datei bereits vorhanden ist. Der Writer des INF weiß jedoch, dass der Vorgang erforderlich ist, und weist Windows an, die Optimierung zu überschreiben und den Dateivorgang auszuführen.

Dieses Flag kann verwendet werden, um sicherzustellen, dass Dateien kopiert werden, wenn sie auch in einer INF DelFiles-Direktive oder einer INF-RenFiles-Direktive angegeben sind.

0x00004000 (COPYFLG_IN_USE_RENAME)
Wenn die Quelldatei nicht kopiert werden kann, weil die Zieldatei verwendet wird, benennen Sie die Zieldatei um, kopieren Sie die Quelldatei in die Zieldatei, und löschen Sie die umbenannte Zieldatei. Wenn die Zieldatei nicht umbenannt werden kann, schließen Sie den Kopiervorgang während des nächsten Systemneustarts ab. Wenn die umbenannte Zieldatei nicht gelöscht werden kann, löschen Sie die umbenannte Zieldatei beim nächsten Systemneustart.

security-descriptor-string
Gibt einen Sicherheitsdeskriptor an, der auf alle Dateien angewendet werden soll, die vom benannten file-list-section kopiert werden. Die security-descriptor-string ist eine Zeichenfolge mit Token, die die DACL-Sicherheitskomponente (D:) angeben.

Informationen zu Sicherheitsdeskriptorzeichenfolgen finden Sie unter Security Descriptor Definition Language (Windows).

Wenn kein Abschnitt file-list-section.security angegeben wird, erben Dateien die Sicherheitsmerkmale des Verzeichnisses, in das die Dateien kopiert werden.

Wenn ein Abschnitt file-list-section.security angegeben wird, müssen die folgenden ACE's eingeschlossen werden, damit Installationen und Upgrades von Geräten und System-Service Packs erfolgen können:

  • (A;; GA;;; SY) – Gewährt allen Zugriff auf das lokale System.

  • (A;; GA;;; BA) – Gewährt integrierten Administratoren sämtlichen Zugriff.

Geben Sie keine ACE-Zeichenfolgen an, die nicht privilegierten Benutzern Schreibzugriff gewähren.

Weitere Informationen zum Angeben von Sicherheitsbeschreibungen finden Sie unter Erstellen sicherer Geräteinstallationen.

Hinweise

Windows kopiert ein Treiberpaket nur im Rahmen einer Treiberinstallation an den Zielspeicherort, wenn die Datei über eine INF CopyFiles-Direktive verfügt . Beim Kopieren von Dateien generiert das Betriebssystem bei Bedarf automatisch temporäre Dateinamen und benennt die kopierten Quelldateien beim nächsten Start des Betriebssystems um.

Der INF-Dateiwriter muss auch Pfadspezifikationen für Dateien bereitstellen, die von Quellmedien kopiert werden, indem der Abschnitt INF SourceDisksNames und der ABSCHNITT INF SourceDisksFiles verwendet wird, um den Pfad jeder Quelldatei im Verhältnis zur INF-Datei auf den Quellmedien explizit anzugeben.

Das Ziel von Kopiervorgängen wird durch den Abschnitt INF DestinationDirs gesteuert. In diesem Abschnitt wird das Ziel für alle Dateikopiervorgänge wie folgt gesteuert:

  • Wenn ein benannter Abschnitt, auf den von einer CopyFiles-Direktive verwiesen wird, über einen entsprechenden Eintrag im Abschnitt DestinationDirs desselben INF verfügt, gibt dieser Eintrag explizit das Zielzielverzeichnis an, in das alle dateien kopiert werden, die im benannten Abschnitt aufgeführt sind. Wenn der benannte Abschnitt nicht im Abschnitt DestinationDirs aufgeführt ist, verwendet Windows den Eintrag DefaultDestDir im Abschnitt DestinationDirs der INF-Datei.

  • Wenn eine CopyFiles-Direktive die @Dateinamensyntax verwendet, verwendet Windows den Eintrag DefaultDestDir im Abschnitt DestinationDirs der INF-Datei.

Die folgenden Punkte gelten für die INF CopyFiles-Direktive :

  • Jeder Dateilistenabschnittsname muss für die INF-Datei eindeutig sein, aber er kann durch CopyFiles-, DelFiles- oder RenFiles-Direktiven an anderer Stelle in derselben INF-Datei referenziert werden. Der Abschnittsname muss den allgemeinen Regeln entsprechen, die unter Allgemeine Syntaxregeln für INF-Dateien beschrieben sind.

  • Dateinamen, die entweder in den @Einträgen filename oder file-list-section angegeben sind, müssen genau der Name einer Datei auf dem Quellmedium sein. Sie können kein %strkey%-Token verwenden, um den Dateinamen anzugeben. Weitere Informationen zu %strkey%-Token finden Sie im Abschnitt INF-Zeichenfolgen.

  • Die CopyFiles-Direktive unterstützt nicht das Dekorieren eines Dateilistenabschnittsnamens mit einer systemdefinierten Plattformerweiterung (.nt, .ntx86, .ntia64 oder .ntamd64).

  • Verwenden Sie keine CopyFiles-Direktiven , um INF-Dateien zu kopieren. Weitere Informationen finden Sie unter Kopieren von INF-Dateien.

Ab Windows Vista gelten die folgenden Punkte auch für die INF CopyFiles-Direktive :

  • Wenn ein Treiberpaket im Treiberspeicher bereitgestellt wird, wird eine Datei nur aus der Treiberpaketquelle in den Treiberspeicher kopiert, wenn die Datei über eine entsprechende INF CopyFiles-Direktive verfügt.

  • Im Rahmen eines Windows-Upgrades kopiert Windows eine Treiberpaketdatei nur im Rahmen einer Treibermigration in den Treiberspeicher , wenn die Datei über eine INF CopyFiles-Direktive verfügt .

Beispiele

Dieses Beispiel zeigt, wie die Abschnitte SourceDisksNames, SourceDisksFiles und DestinationDirs die Pfade für Kopierdateivorgänge angeben, die bei der Verarbeitung eines einfachen Gerätetreiber-INF auftreten.

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

Weitere Beispiele für die Verwendung der INF CopyFiles-Direktive finden Sie in den INF-Dateien für die Gerätetreiberbeispiele, die im Verzeichnis src des Windows Driver Kit (WDK) enthalten sind.

Weitere Informationen

AddInterface

ClassInstall32

DDInstall

DDInstall. Schnittstellen

DelFiles

DestinationDirs

InterfaceInstall32

RenFiles

SourceDisksFiles

SourceDisksNames

Zeichenfolgen

Version