BinPlace 目标目录

BinPlace 创建一个目录树来保存它要放置的文件。 该树的结构由传递到 BinPlace 命令行的参数、某些环境变量的值以及称为 “位置文件”的文本文件的内容确定。

如果满足以下两个条件之一,BinPlace 将放置文件:

  1. 文件在 BinPlace 命令行上指定。

  2. 该文件是与其关联的可执行文件位于同一目录中的符号文件,可执行文件是在命令行上指定的。 在这种情况下,符号文件和可执行文件将放置在不同的目录中。 BinPlace 还可以执行拆分或去除 (请参阅 公共符号和专用符号) 或去除 (请参阅符号 文件系统 在此方案中) 。

当 BinPlace 放置文件时,它将自动覆盖具有相同名称的旧文件。 但是,默认情况下,BinPlace 不会覆盖较新的文件。 具体而言,如果可执行文件存在较新的 (或相同的) 版本,则可执行文件或任何关联的符号文件都不会写入磁盘。 如果希望 BinPlace 覆盖文件而不考虑其时间戳,请使用 -f 命令行选项。

文件目标

BinPlace 在其命令行上放置任何文件所在的目录的名称是通过连接两个目录( 根目标目录类子目录)创建的。 (目录可以具有你选择的任何名称,但根目标目录通常是要在其中放置文件的目录树的根目录,而类子目录是一个子目录,其中放置特定文件或文件组似乎合乎逻辑。)

  • 可以使用 -r RootDestinationPath 命令行参数指定根目标目录。 如果省略此值,则默认值分别由基于 x86、基于 Itanium 或基于 x64 的计算机上的_NT386TREE、_NTIA64TREE或_NTAMD64TREE环境变量确定。 必须通过以下方式之一定义根目标目录:如果根本未定义,则不会运行 BinPlace。

  • 类子目录通常在放置文件中指定。 可以指定一个文件的多个类子目录;这会导致 BinPlace 创建文件的副本,并将其放置在每个指定位置。 有关完整详细信息,请参阅 放置文件语法 。 还可以使用 -:D EST ClassPath 命令行参数指定类子目录。

符号文件目标

当可执行文件在 BinPlace 的命令行上列出,并且同一目录中有关联的符号文件时,BinPlace 也会复制 (或更改) 符号文件。 通过连接三个目录( 符号根目录类子目录和 文件类型子目录)来创建放置此符号文件的目录。

  • 符号根目录可以使用 -s SymbolRoot 命令行参数指定。 如果使用 -a-x 开关,则去除的符号文件将放在 SymbolRoot 目录下-在这种情况下,可以使用 -n FullSymbolRoot 指定完整符号文件的位置。

  • 类子目录通常在放置文件中指定。 可以指定一个文件的多个类子目录;这会导致 BinPlace 创建文件的副本,并将其放置在每个指定位置。 有关完整详细信息,请参阅 放置文件语法 。 还可以使用 -:D EST ClassPath 命令行参数指定类子目录。 如果使用 -y 命令行开关,则不会将类子目录用于符号文件 -- 目标目录将仅包含符号根目录和文件类型子目录。

  • 文件类型子目录仅用于符号文件。 它由原始可执行文件的文件扩展名确定。 因此,与 .exe 文件关联的符号文件将放置在 exe 子目录中,与 DLL 关联的符号文件将放在 dll 子目录中,与驱动程序关联的符号文件将放置在 sys 子目录中。 此约定有助于避免文件名冲突-例如,myprogram.exe和myprogram.dll可能都有名为 myprogram.pdb 的符号文件,但这些符号文件将放置在不同的子目录中。

此算法有一个例外。 如果未提供 -s-n ,则完整的符号文件将与二进制文件放在同一位置。

注意 如果在 BinPlace 的命令行中列出符号文件名,则 BinPlace 将像任何其他文件一样移动它,并且不会检查其内容。 若要使用 BinPlace 的符号文件操作技术,必须列出可执行文件名称,而不是符号文件名。