CopyFiles ディレクティブは、次のいずれかを実行できます。
ソース メディアから既定の宛先ディレクトリに 1 つのファイルをコピーします。
INF 内の 1 つ以上の INF ライター定義セクションを参照します。各セクションは、ソース メディアからコピー先にコピーするファイルの一覧を指定します。
[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]...
CopyFiles ディレクティブは、正式な構文ステートメントに示されているセクション内で指定できます。 このディレクティブは、次の INF セクション内で指定することもできます。
DDInstall の INF AddInterface ディレクティブによって参照される add-interface-section。[インターフェイス] セクション。
INF InterfaceInstall32 セクションで参照される install-interface-section
CopyFiles ディレクティブによって参照される各名前付きセクションには、次の形式の 1 つ以上のエントリがあります。
[file-list-section]
destination-file-name[,[source-file-name][,[unused][,flag]]]
...
INF ライター定義 のファイル リスト セクション には、それぞれ個別の行に任意の数のエントリを含めることができます。
各ファイル リスト セクションには、次の形式の省略可能な関連付けられた file-list-section.security セクションを含めることができます。
[file-list-section.security]
"security-descriptor-string"
エントリ
destination-file-name
コピー先ファイルの名前を指定します。
source-file-name が指定されていない場合、この仕様はソース ファイルの名前でもあります。
source-file-name
ソース ファイルの名前を指定します。 ファイル コピー操作のソース ファイル名とコピー先ファイル名が同じ場合は、 source-file-name を省略できます。
未使用
このエントリは、Windows 2000 以降のバージョンのWindowsではサポートされなくなりました。
flag
これらの省略可能なフラグは、16 進表記またはセクション エントリの 10 進値として表され、特定のソース ファイルをコピー先にコピーする方法 (またはコピー先にコピーするかどうかを) 制御するために使用できます。 次のシステム定義フラグの 1 つ以上の (ORed) 値を指定できます。 ただし、これらのフラグの一部は相互に排他的です。
0x00000001 (COPYFLG_WARN_IF_SKIP)
ユーザーがファイルをコピーしないことを選択した場合は、警告を送信します。 このフラグと次のフラグは相互に排他的であり、どちらもデジタル署名された INF ファイルとは無関係です。
0x00000002 (COPYFLG_NOSKIP)
ユーザーがファイルのコピーをスキップできないようにします。
ドライバー パッケージが署名されている場合、このフラグは暗黙的に指定されます。
0x00000004 (COPYFLG_NOVERSIONCHECK)
ファイルのバージョンを無視し、コピー先ディレクトリ内の既存のファイルに書き込みます。 このフラグと次の 2 つのフラグは相互に排他的です。 このフラグは、デジタル署名された INF ファイルとは無関係です。
0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
ファイルの使用中の動作を強制する: 同じ名前の既存のファイルが現在開いている場合はコピーしないでください。 代わりに、指定されたソース ファイルを一時的な名前でコピーして、次回の再起動時に名前を変更して使用できるようにします。
0x00000010 (COPYFLG_NO_OVERWRITE)
コピー先ディレクトリ内の既存のファイルを同じ名前のソース ファイルに置き換えないでください。 このフラグを他のフラグと組み合わせることはできません。
0x00000020 (COPYFLG_NO_VERSION_DIALOG)
既存のファイルがソース ファイルよりも新しい場合は、移動先ディレクトリ内のファイルをソース ファイルに上書きしないでください。
新しいチェックは、VS_VERSIONINFO ファイル バージョン リソースから抽出されたファイル バージョンを使用して行われます。 詳細については、「 バージョン情報」を参照してください。 ターゲット ファイルが実行可能ファイルまたはリソース イメージではない場合、またはファイルにファイルのバージョン情報が含まれていない場合、デバイス のインストールではターゲット ファイルが古いものと見なされます。
0x00000040 (COPYFLG_OVERWRITE_OLDER_ONLY)
コピー先のファイルが新しいバージョンに置き換えられる場合にのみ、ソース ファイルをコピー先ディレクトリにコピーします。 このフラグは、デジタル署名された INF ファイルとは無関係です。 バージョン チェックでは、COPYFLG_NO_VERSION_DIALOGで前述したものと同じ手順が使用されます。
0x00000400 (COPYFLG_REPLACEONLY)
コピー先ディレクトリにファイルが既に存在する場合にのみ、ソース ファイルをコピー先ディレクトリにコピーします。
0x00000800 (COPYFLG_NODECOMP) (Windows 7 以降)
圧縮されている場合は、ソース ファイルを展開せずに、ソース ファイルをコピー先ディレクトリにコピーします。
0x00001000 (COPYFLG_REPLACE_BOOT_FILE)
このファイルは、システム ローダーで必要です。 システムは、ユーザーにシステムの再起動を求めるメッセージを表示します。
0x00002000 (COPYFLG_NOPRUNE)
最適化の結果としてこの操作を削除しないでください。
たとえば、Windowsは、ファイルが既に存在するため、ファイルのコピー操作が不要であると判断する場合があります。 ただし、INF のライターは、操作が必要であることを認識し、その最適化をオーバーライドしてファイル操作を実行するようにWindowsに指示します。
このフラグを使用すると、ファイルが INF DelFiles ディレクティブまたは INF RenFiles ディレクティブでも指定されている場合に、ファイルが確実にコピーされるようにすることができます。
0x00004000 (COPYFLG_IN_USE_RENAME)
コピー先ファイルが使用されているためにソース ファイルをコピーできない場合は、コピー先ファイルの名前を変更してから、コピー元ファイルをコピー先ファイルにコピーし、名前を変更したコピー先ファイルを削除します。 コピー先ファイルの名前を変更できない場合は、次のシステム再起動時にコピー操作を完了します。 名前を変更した宛先ファイルを削除できない場合は、次のシステムの再起動時に、名前を変更した宛先ファイルを削除します。
security-descriptor-string
名前付き file-list-section によってコピーされるすべてのファイルに適用されるセキュリティ記述子を指定します。
security-descriptor-string は、DACL (D:) セキュリティ コンポーネントを示すトークンを含む文字列です。
セキュリティ記述子文字列の詳細については、「セキュリティ記述子定義言語 (Windows)」を参照してください。
file-list-section.security セクションが指定されていない場合、ファイルは、ファイルのコピー先のディレクトリーのセキュリティー特性を継承します。
file-list-section.security セクションが指定されている場合は、デバイスとシステム サービス パックのインストールとアップグレードを実行できるように、次の ACE を含める必要があります。
(A;;GA;;;SY) - ローカル システムへのすべてのアクセスを許可します。
(A;;GA;;;BA) - 組み込み管理者へのすべてのアクセスを許可します。
特権 のない ユーザーに書き込みアクセス権を付与する ACE 文字列は指定しないでください。
セキュリティ記述子を指定する方法の詳細については、「 セキュリティで保護されたデバイスのインストールの作成」を参照してください。
Remarks
Windowsは、ファイルに INF CopyFiles ディレクティブがある場合にのみ、ドライバー パッケージをドライバーのインストールの一部としてコピー先の場所にコピーします。 ファイルをコピーすると、オペレーティング システムは必要に応じて一時ファイル名を自動的に生成し、次にオペレーティング システムを起動したときにコピーしたソース ファイルの名前を変更します。
また、INF ファイル ライターは、INF SourceDisksNames セクションと INF SourceDisksFiles セクションを使用してソース メディアからコピーされるファイルのパス指定を指定して、ソース メディア内の INF ファイルに対する各ソース ファイルのパスを明示的に指定する必要があります。
コピー操作のコピー先は、 INF DestinationDirs セクションによって制御されます。 このセクションでは、次のように、すべてのファイル コピー操作の宛先を制御します。
CopyFiles ディレクティブによって参照される名前付きセクションに、同じ INF の DestinationDirs セクションに対応するエントリがある場合、そのエントリは、名前付きセクションに一覧表示されているすべてのファイルのコピー先ディレクトリを明示的に指定します。 名前付きセクションが DestinationDirs セクションに表示されていない場合、Windowsは INF ファイルの DestinationDirs セクションの DefaultDestDir エントリを使用します。
CopyFiles ディレクティブが @filename 構文を使用する場合、Windowsは INF ファイルの DestinationDirs セクションの DefaultDestDir エントリを使用します。
INF CopyFiles ディレクティブには、次の点が適用されます。
すべての ファイル リスト セクション 名は INF ファイルに対して一意である必要がありますが、同じ INF ファイル内の他の場所にある CopyFiles、 DelFiles、または RenFiles ディレクティブで参照できます。 セクション名は、INF ファイルの一般的な構文規則で説明されている 一般的な規則に従う必要があります。
@ filename または file-list-section 項目で指定されるファイル名は、ソース・メディア上のファイルの正確な名前でなければなりません。 %strkey% トークンを使用してファイル名を指定することはできません。 strkey% トークン %の詳細については、「INF 文字列」セクションを参照してください。
CopyFiles ディレクティブは、システム定義のプラットフォーム拡張子 (.nt、.ntx86、.ntia64、または .ntamd64) を使用したファイル リスト セクション名の修飾をサポートしていません。
INF ファイルを コピーするために CopyFiles ディレクティブを使用しないでください。 詳細については、「 INF ファイルのコピー」を参照してください。
Windows Vista以降、INF CopyFiles ディレクティブにも次の点が適用されます。
ドライバー パッケージが ドライバー ストアでステージングされると、ファイルがドライバー パッケージ ソースからドライバー ストアにコピーされるのは、ファイルに対応する INF CopyFiles ディレクティブがある場合のみです。
Windowsアップグレードの一環として、Windowsは、ファイルに INF CopyFiles ディレクティブがある場合にのみ、ドライバーの移行の一環としてドライバー パッケージ ファイルをドライバー ストアにコピーします。
Examples
この例では、 SourceDisksNames、 SourceDisksFiles、および DestinationDirs セクションで、単純なデバイス ドライバー 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
; ...
INF CopyFiles ディレクティブの使用方法のその他の例については、Windows Driver Kit (WDK)の src ディレクトリに含まれているデバイス ドライバーのサンプルの INF ファイルを参照してください。