INF CopyFiles-Direktive

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

  • Führen Sie dazu, dass eine einzelne Datei aus dem Quellmedium in das Standardzielverzeichnis kopiert wird.

  • Verweisen Sie auf einen oder mehrere INF-writer-definierte Abschnitte in der INF, die jeweils eine Liste der Dateien angibt, die von den Quellmedien auf 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 innerhalb eines der Abschnitte angegeben werden, die in der formalen Syntaxausweisung 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, weist mindestens einen Eintrag des folgenden Formulars auf:

[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 enthalten, jeweils in einer separaten Zeile.

Jeder Dateilistenabschnitt kann über einen optionalen, zugeordneten Dateilistenabschnitt.security-Abschnitt des folgenden Formulars verfügen:

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

Einträge

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

Quelldateiname
Gibt den Namen der Quelldatei an. Wenn die Quell- und Zieldateinamen für den Dateikopievorgang identisch sind, kann der Quelldateiname weggelassen werden.

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

flag
Diese optionalen Flags, ausgedrückt in hexadezimaler Schreibweise 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 (ORed)-Wert für die folgenden vom System definierten Flags kann angegeben werden. Einige dieser Kennzeichen schließen sich jedoch gegenseitig aus:

0x00000001 (COPYFLG_WARN_IF_SKIP)
Senden Sie eine Warnung, wenn der Benutzer eine Datei nicht kopieren möchte. Diese Kennzeichnung und die nächste schließen sich gegenseitig aus, und beide sind irrelevant für INF-Dateien, die digital signiert sind.

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

0x00000004 (COPYFLG_NOVERSIONCHECK)
Dateiversionen ignorieren und über vorhandene Dateien im Zielverzeichnis schreiben. Diese Kennzeichnung und die nächsten beiden schließen sich gegenseitig aus. Dieses Kennzeichen ist für digital signierte INF-Dateien irrelevant.

0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
Verhalten der dateiinternen Verwendung erzwingen: Kopieren Sie nicht über eine 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 keine vorhandene Datei im Zielverzeichnis durch eine Quelldatei mit demselben Namen. Diese Kennzeichnung kann nicht mit anderen Flags kombiniert werden.

0x00000020 (COPYFLG_NO_VERSION_DIALOG)
Überschreiben Sie eine Datei im Zielverzeichnis nicht mit der Quelldatei, wenn diese Datei neuer als die Quelldatei ist.

Die neuere Überprüfung erfolgt mithilfe der Dateiversion, wie aus der Dateiversionsressource VS_VERSIONINFO extrahiert. 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, geht die Geräteinstallation davon aus, dass die Zieldatei älter ist.

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

0x00000400 (COPYFLG_REPLACEONLY)
Kopieren Sie die Quelldatei nur 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 Dateikopievorgang nicht erforderlich ist, da die Datei bereits vorhanden ist. Der Autor der INF weiß jedoch, dass der Vorgang erforderlich ist und leitet Windows an, seine Optimierung außer Kraft zu setzen 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, da 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 während des nächsten Systemneustarts.

security-descriptor-string
Gibt einen Sicherheitsdeskriptor an, der auf alle Dateien angewendet werden soll, die vom benannten Dateilistenabschnitt kopiert werden. Die Sicherheitsbeschreibungszeichenfolge 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 ist, erben Dateien die Sicherheitsmerkmale des Verzeichnisses, in das die Dateien kopiert werden.

Wenn ein Abschnitt "file-list-section.security" angegeben ist, muss die folgende ACE enthalten sein, damit Installationen und Upgrades von Geräten und System-Service Packs auftreten können:

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

  • (A;; GA;;; BA) − Gewährt allen Zugriff auf integrierte Administratoren.

Geben Sie keine ACE-Zeichenfolgen an, die Schreibzugriff auf nicht privilegierte Benutzer gewähren.

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

Bemerkungen

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

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

Das Ziel der Kopiervorgänge wird vom Abschnitt INF DestinationDirs gesteuert. In diesem Abschnitt wird das Ziel für alle Dateikopievorgä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 Zielverzeichnis 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 DefaultDestDir-Eintrag im Abschnitt "DestinationDirs" der INF-Datei.

  • Wenn eine CopyFiles-Direktive die @ Dateinamensyntax verwendet, verwendet Windows den DefaultDestDir-Eintrag 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, kann jedoch von CopyFiles-, DelFiles- oder RenFiles-Direktiven an anderer Stelle in derselben INF-Datei referenziert werden. Der Abschnittsname muss den allgemeinen Regeln entsprechen, die in allgemeinen Syntaxregeln für INF-Dateien beschrieben werden.

  • Dateinamen, die entweder in den @Dateinamen - oder Dateilistenabschnittseinträgen angegeben sind, müssen der genaue Name einer Datei auf dem Quellmedium sein. Sie können keinen %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 Anfügen eines Dateilistenabschnittsnamens mit einer systemdefinierten Plattformerweiterung (.nt, .ntx86, .ntia64 oder .ntamd64).

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

Ab Windows Vista gelten auch die folgenden Punkte 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 nur eine Treiberpaketdatei als Teil einer Treibermigration in den Treiberspeicher, wenn die Datei über eine INF CopyFiles-Direktive verfügt.

Examples

In diesem Beispiel wird gezeigt, wie die Abschnitte SourceDisksNames, SourceDisksFiles und DestinationDirs die Pfade für Kopierdateivorgänge angeben, die bei der Verarbeitung eines einfachen Gerätetreibers 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 src-Verzeichnis der Windows-Treiberkit (WDK, Windows Driver Kit) enthalten sind.

Siehe auch

AddInterface

ClassInstall32

DDInstall

DDInstall. Schnittstellen

DelFiles

DestinationDirs

InterfaceInstall32

RenFiles

SourceDisksFiles

SourceDisksNames

Zeichenfolgen

Version