Dyrektywa INF CopyFiles

Dyrektywa CopyFiles może wykonać jedną z następujących czynności:

  • Umożliwia skopiowanie pojedynczego pliku z nośnika źródłowego do domyślnego katalogu docelowego.

  • Odwołaj się do co najmniej jednej sekcji zdefiniowanej przez moduł zapisywania INF w inF, która określa listę plików do skopiowania z nośnika źródłowego do miejsca docelowego.

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

Dyrektywę CopyFiles można określić w dowolnej sekcji pokazanej w instrukcji składni formalnej. Tę dyrektywę można również określić w dowolnej z następujących sekcji INF:

Każda nazwana sekcja, do której odwołuje się dyrektywa CopyFiles , zawiera co najmniej jeden wpis następującego formularza:

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

Sekcja lista-plików zdefiniowana przez składnik zapisywania INF może zawierać dowolną liczbę wpisów, z których każda znajduje się w osobnym wierszu.

Każda sekcja lista-plików może zawierać opcjonalną sekcję file-list-section.security w następującym formularzu:

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

Wpisy

nazwa pliku docelowego
Określa nazwę pliku docelowego. Jeśli nie podano nazwy pliku źródłowego , ta specyfikacja jest również nazwą pliku źródłowego.

source-file-name
Określa nazwę pliku źródłowego. Jeśli nazwy plików źródłowych i docelowych dla operacji kopiowania plików są takie same, można pominąć nazwę pliku źródłowego .

Nieużywane
Ten wpis nie jest już obsługiwany w wersji Windows 2000 i nowszych Windows.

flag
Te opcjonalne flagi, wyrażone w notacji szesnastkowej lub jako wartość dziesiętna we wpisie sekcji, mogą służyć do kontrolowania sposobu (lub czy) określonego pliku źródłowego jest kopiowany do miejsca docelowego. Można określić co najmniej jedną wartość (ORed) dla następujących flag zdefiniowanych przez system. Jednak niektóre z tych flag wykluczają się wzajemnie:

0x00000001 (COPYFLG_WARN_IF_SKIP)
Wyślij ostrzeżenie, jeśli użytkownik zdecyduje się nie skopiować pliku. Ta flaga i następne wzajemnie się wykluczają, a oba są nieistotne dla plików INF, które są podpisane cyfrowo.

0x00000002 (COPYFLG_NOSKIP)
Nie zezwalaj użytkownikowi na pomijanie kopiowania pliku. Ta flaga jest dorozumiana, jeśli pakiet sterowników jest podpisany.

0x00000004 (COPYFLG_NOVERSIONCHECK)
Ignoruj wersje plików i zapisuj istniejące pliki w katalogu docelowym. Ta flaga i następne dwie wzajemnie się wykluczają. Ta flaga nie ma znaczenia dla podpisanych cyfrowo plików INF.

0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
Wymuś zachowanie podczas używania pliku: nie kopiuj istniejącego pliku o tej samej nazwie, jeśli jest on obecnie otwarty. Zamiast tego skopiuj dany plik źródłowy o tymczasowej nazwie, aby można było zmienić jego nazwę i użyć podczas następnego ponownego uruchomienia.

0x00000010 (COPYFLG_NO_OVERWRITE)
Nie zastąp istniejącego pliku w katalogu docelowym plikiem źródłowym o tej samej nazwie. Tej flagi nie można połączyć z żadnymi innymi flagami.

0x00000020 (COPYFLG_NO_VERSION_DIALOG)
Nie zapisuj pliku w katalogu docelowym z plikiem źródłowym, jeśli istniejący plik jest nowszy niż plik źródłowy.

Nowsze sprawdzanie jest wykonywane przy użyciu wersji pliku, jak wyodrębniono z zasobu wersji pliku VS_VERSIONINFO. Aby uzyskać więcej informacji, zobacz Informacje o wersji. Jeśli plik docelowy nie jest plikiem wykonywalnym lub obrazem zasobu lub plik nie zawiera informacji o wersji pliku, instalacja urządzenia zakłada, że plik docelowy jest starszy.

0x00000040 (COPYFLG_OVERWRITE_OLDER_ONLY)
Skopiuj plik źródłowy do katalogu docelowego tylko wtedy, gdy plik w miejscu docelowym jest zastępowany przez nowszą wersję. Ta flaga nie ma znaczenia dla podpisanych cyfrowo plików INF. Sprawdzanie wersji używa tej samej procedury, co opisane powyżej w COPYFLG_NO_VERSION_DIALOG.

0x00000400 (COPYFLG_REPLACEONLY)
Skopiuj plik źródłowy do katalogu docelowego tylko wtedy, gdy plik jest już obecny w katalogu docelowym.

0x00000800 (COPYFLG_NODECOMP) (Windows 7 i nowsze)
Skopiuj plik źródłowy do katalogu docelowego bez dekompresowania pliku źródłowego, jeśli jest skompresowany.

0x00001000 (COPYFLG_REPLACE_BOOT_FILE)
Ten plik jest wymagany przez moduł ładujący systemu. System wyświetli monit o ponowne uruchomienie systemu.

0x00002000 (COPYFLG_NOPRUNE)
Nie usuwaj tej operacji w wyniku optymalizacji.

Na przykład Windows może określić, że operacja kopiowania plików nie jest konieczna, ponieważ plik już istnieje. Moduł zapisywania INF wie jednak, że operacja jest wymagana i kieruje Windows zastąpić jego optymalizację i wykonać operację pliku.

Tej flagi można użyć, aby upewnić się, że pliki są kopiowane, jeśli są one również określone w dyrektywie INF DelFiles lub inF RenFiles dyrektywy.

0x00004000 (COPYFLG_IN_USE_RENAME)
Jeśli nie można skopiować pliku źródłowego, ponieważ jest używany plik docelowy, zmień nazwę pliku docelowego, skopiuj plik źródłowy do pliku docelowego i usuń zmieniony plik docelowy. Jeśli nie można zmienić nazwy pliku docelowego, ukończ operację kopiowania podczas następnego ponownego uruchomienia systemu. Jeśli nie można usunąć zmienionego pliku docelowego, usuń zmieniony plik docelowy podczas następnego ponownego uruchomienia systemu.

security-descriptor-string
Określa deskryptor zabezpieczeń, który ma być stosowany do wszystkich plików skopiowanych przez nazwaną sekcję file-list-section. Ciąg-deskryptor-zabezpieczeń jest ciągiem z tokenami wskazującymi składnik zabezpieczeń DACL (D:).

Aby uzyskać informacje na temat ciągów deskryptora zabezpieczeń, zobacz Security Descriptor Definition Language (Windows).

Jeśli nie określono sekcji file-list-section.security, pliki dziedziczą właściwości zabezpieczeń katalogu, do którego są kopiowane pliki.

Jeśli zostanie określona sekcja file-list-section.security, należy uwzględnić następujące elementy ACE, aby instalacje i uaktualnienia urządzeń i dodatków Service Pack systemu mogły wystąpić:

  • (A;; OGÓLNA dostępność;;; SY) − udziela całego dostępu do systemu lokalnego.

  • (A;; OGÓLNA dostępność;;; BA) − udziela dostępu wszystkim administratorom wbudowanym.

Nie należy określać ciągów ACE, które udzielają dostępu do zapisu użytkownikom nieuprzywilejowanych.

Aby uzyskać więcej informacji na temat określania deskryptorów zabezpieczeń, zobacz Tworzenie bezpiecznych instalacji urządzeń.

Remarks

Windows kopiuje pakiet sterowników tylko do lokalizacji docelowej w ramach instalacji sterownika, jeśli plik ma dyrektywę INF CopyFiles. Podczas kopiowania plików system operacyjny automatycznie generuje tymczasowe nazwy plików, w razie potrzeby i zmienia nazwę skopiowanych plików źródłowych przy następnym uruchomieniu systemu operacyjnego.

Składnik zapisywania plików INF musi również podać specyfikacje ścieżek dla plików kopiowanych z nośnika źródłowego przy użyciu sekcji INF SourceDisksNames i sekcji INF SourceDisksFiles , aby jawnie określić ścieżkę każdego pliku źródłowego względem pliku INF na nośniku źródłowym.

Miejsce docelowe operacji kopiowania jest kontrolowane przez sekcję INF DestinationDirs. Ta sekcja steruje miejscem docelowym dla wszystkich operacji kopiowania plików w następujący sposób:

  • Jeśli nazwana sekcja, do której odwołuje się dyrektywa CopyFiles , ma odpowiedni wpis w sekcji DestinationDirs tego samego INF, ten wpis jawnie określa docelowy katalog docelowy, do którego są kopiowane wszystkie pliki wymienione w nazwanej sekcji. Jeśli nazwana sekcja nie znajduje się na liście w sekcji DestinationDirs, Windows używa wpisu DefaultDestDir w sekcji DestinationDirs pliku INF.

  • Jeśli dyrektywa CopyFiles używa @ składni nazwy pliku, Windows używa wpisu DefaultDestDir w sekcji DestinationDirs pliku INF.

Następujące kwestie dotyczą dyrektywy INF CopyFiles :

  • Każda nazwa sekcji listy plików musi być unikatowa dla pliku INF, ale może być przywoływała do niej dyrektywy CopyFiles, DelFiles lub RenFiles w innym miejscu w tym samym pliku INF. Nazwa sekcji musi być zgodna z ogólnymi regułami opisanymi w ogólnych regułach składni dla plików INF.

  • Nazwy plików określone w @ wpisach nazwy pliku lub sekcji file-list-section muszą być dokładną nazwą pliku na nośniku źródłowym. Do określenia nazwy pliku nie można użyć tokenu% %strkey . Aby uzyskać więcej informacji na temat tokenów% strkey %, zobacz sekcję Ciągi INF.

  • Dyrektywa CopyFiles nie obsługuje dekorowania nazwy sekcji file-list-section z rozszerzeniem platformy zdefiniowanej przez system (.nt, ntx86, .ntia64 lub .ntamd64).

  • Nie używaj dyrektyw CopyFiles do kopiowania plików INF. Aby uzyskać więcej informacji, zobacz Kopiowanie plików INF.

Począwszy od Windows Vista, następujące kwestie dotyczą również dyrektywy INF CopyFiles:

  • Gdy pakiet sterowników jest przygotowany w magazynie sterowników, plik jest kopiowany tylko ze źródła pakietu sterowników do magazynu sterowników, jeśli plik ma odpowiednią dyrektywę INF CopyFiles .

  • W ramach uaktualnienia Windows Windows kopiuje tylko plik pakietu sterowników do magazynu sterowników w ramach migracji sterowników, jeśli plik ma dyrektywę INF CopyFiles.

Examples

W tym przykładzie pokazano, jak sekcje SourceDisksNames, SourceDisksFiles i DestinationDirs określają ścieżki dla operacji kopiowania plików, które występują podczas przetwarzania prostego sterownika urządzenia 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
; ...

Aby uzyskać dodatkowe przykłady używania dyrektywy INF CopyFiles, zobacz pliki INF dla przykładów sterowników urządzeń, które znajdują się w katalogu src Windows Driver Kit (WDK).

Informacje dodatkowe

AddInterface

ClassInstall32

DDInstall

DDInstall. Interfejsy

DelFiles

DestinationDirs

InterfaceInstall32

RenFiles

SourceDisksFiles

SourceDisksNames

Ciągi

Wersja