INF CopyFiles ディレクティブ

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 セクション内で指定することもできます。

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 文字列は指定 しない でください。

セキュリティ記述子を指定する方法の詳細については、 「セキュリティで保護されたデバイスのインストールの作成」を参照してください。

解説

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 ファイル内の他の場所にある CopyFilesDelFiles、または RenFiles ディレクティブで参照できます。 各セクション名は、INF ファイルの 一般的な構文規則で説明されている一般的な規則に従う必要があります。

  • @ファイル名 または file-list-section エントリで指定するファイル名は、ソース メディア上のファイルの正確な名前である必要があります。 %strkey% トークンを使用して ファイル名を指定することはできません。 %strkey% トークンの詳細については、「INF 文字列」セクションを参照してください。

  • CopyFiles ディレクティブは、システム定義のプラットフォーム拡張子 (.nt.ntx86.ntia64 または .ntamd64) を使用した ファイル リスト セクション 名の修飾をサポートしていません。

  • INF ファイルをコピーするために CopyFiles ディレクティブを使用しないでください。 詳細については、 「INF ファイルのコピー」を参照してください。

Windows Vista 以降では、INF CopyFiles ディレクティブにも次の点が 適用されます。

  • ドライバー パッケージが ドライバー ストア でステージングされると、ファイルに対応する INF CopyFiles ディレクティブがある場合にのみ、ドライバー パッケージ ソースからドライバー ストアにファイルがコピーされます。

  • Windows のアップグレードの一環として、Windows は、ファイルに INF CopyFiles ディレクティブがある場合にのみ、ドライバーの移行の一部として ドライバー ストア にドライバー パッケージ ファイルをコピーします。

この例では、 SourceDisksNamesSourceDisksFilesDestinationDirs セクションで、単純なデバイス ドライバー 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 ファイルを参照してください。

関連項目

AddInterface

ClassInstall32

DDInstall

DDInstall.Interfaces

DelFiles

DestinationDirs

InterfaceInstall32

RenFiles

SourceDisksFiles

SourceDisksNames

文字列

Version