INF DestinationDirs 部分
DestinationDirs 节指定对 INF 文件中其他位置按名称引用的文件执行的所有复制、删除和/或重命名操作的目标目录。
[DestinationDirs]
[DefaultDestDir=dirid[,subdir]]
[file-list-section=dirid[,subdir]]...
项
DefaultDestDir=dirid[,subdir]
指定对文件执行的所有复制、删除和/或重命名操作的默认目标目录,这些操作未显式列在此处由其他条目引用的文件 列表节 中。 若要确保文件操作始终发生在正确的目录中,包含 Include 和 Needs 条目的 INF 文件不应指定默认目标目录。 有关更多信息,请参见下面的“备注”部分。
file-list-section=dirid[,subdir]] ...
指定 INF 文件中其他位置的 CopyFiles、 RenFiles 或 DelFiles 指令引用的节的 INF 编写器确定的名称。 如果此部分具有 DefaultDestDir 条目,并且此 INF 中指定的所有复制文件操作具有相同的目标目标,则此类条目是可选的。 但是,INF 中其他位置的 RenFiles 或 DelFiles 指令引用的任何 file-list-section 都必须在此处列出。
dirid
为按名称引用的文件(可能位于 INF 的命名 file-list-section 内)的操作指定目标目录的目录标识符。 有关常用 dirids 的列表,请参阅 Using Dirids。 在Windows 10版本 1709 及更高版本的 Windows 上,建议使用 DIRID 13。 有关详细信息 ,请参阅从驱动程序存储运行 。
subdir
指定 由 dirid 标识的目录下的子目录 (及其路径的其余部分(如果有),) 指定为给定 file-list-section 中文件操作的目标。
注解
在使用 INF CopyFiles 指令或引用 file-list-section 的任何 INF 文件中,无论是使用 CopyFiles、DelFiles 还是 RenFiles 指令,都需要 DestinationDirs 节。
如果 Abc.inf 包含来自另一个 INF 文件 Def.inf 的部分,并且这两个 INF 文件都包含用于 copy-file、rename-file 或 delete-file 操作的 DefaultDestDir 条目,则 Windows 将忽略 Def.inf 中指定的默认目标目录,并在 Abc.inf 中指定的默认目标目录中执行所有相应的文件操作。
为了确保文件操作始终发生在正确的目录中,包含 Include 和 Needs 条目的 INF 文件不应在 DestinationDirs 节中包含 DefaultDestDir 条目。 相反,此类 INF 文件应显式引用 DestinationDirs 节中 CopyFiles、RenFiles 和 DelFiles 指令指定的所有文件列表节名称。
如果 INF 文件不包含 Include 和 Needs 条目,INF 可以使用 DefaultDestDir 条目指定 INF 文件中其他位置出现的复制、重命名和删除文件操作的默认目标:
- 使用直接复制 (@filename) 表示法的 CopyFiles 指令必须在 INF 的 DestinationDirs 节中有一个 DefaultDestDir 条目,其中显示了直接复制条目。
- 未在 DestinationDirs 节中直接引用的 CopyFiles、RenFiles 或 DelFiles 节必须在 INF 的 DestinationDirs 节中具有 DefaultDestDir 条目,其中显示复制、重命名和删除文件部分。
示例
本示例为所有 copy-file、delete-file 和 rename-file 操作设置默认目标目录。 对于新外围设备的 INF 文件,这种简单的 DestinationDirs 节很常见,因为此类 INF 通常只是将一组源文件复制到目标计算机上的单个目录中。
[DestinationDirs]
DefaultDestDir = 13
此示例显示了显示/视频驱动程序的 INF 的 DestinationDirs 部分的片段。
[DestinationDirs]
DefaultDestDir = 13
; ...
; list of per-Manufacturer, per-Models, per-DDInstall-section, and
; CopyFiles-referenced xxx.Miniport/xxx.Display sections omitted here
; along with several other miniport/display paired drivers
; ...
vga.Miniport = 13
vga.Display = 13
xga.Miniport = 13
xga.Display = 13