https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff542216(v=vs.85).aspx
BinPlace 在命令行上使用以下语法:
binplace [Options] File [ [Options] [@PlaceFile] File [...] ]
参数
这可以报考下面的任何开关。这些开关的前面应当有一个连字符 (-) 或一个斜杠 (/)。可以在一个连字符或斜杠后面结合使用多个选项,但是采用其他参数的选项的后面应当有一个空格。因此,以下两个语句是等效的:
binplace -q -k -g LCFile -v -s SymbolRoot File binplace -qkg LCFile -vs SymbolRoot File
提供了以下开关:
导致 BinPlace 在放置符号文件时,将专用符号从符号文件中去除。这会创建去除了内容的符号文件,其中仅包含公用符号,而不包含专用符号。在使用 -a 开关时,必须同时使用 -s 和 -x。如果使用 -a,则去除了内容的符号文件将放在由 -sSymbolRoot 指定的路径中。如果 -nFullSymbolRoot 也存在,则完整的符号文件将放在 FullSymbolRoot 中。否则,它们将不会放在任何位置。
导致 BinPlace 将文件放在不同于通常位置的位置。在按照通常的方式将根目标目录、类子目录和文件类型子目录连接之后,BinPlace 会在该路径后面附加 ExtraSubdirectory 以创建最终的目标目录。ExtraSubdirectory 的开头和结尾都不应当为反斜杠。有关详细信息,请参阅 BinPlace 目标目录。
导致 BinPlace 在无法放置文件时继续执行。默认情况下,BinPlace 将在发生此错误时退出。
强制 BinPlace 放置文件,即使该文件会覆盖更新的文件也是如此。默认情况下,当 BinPlace 尝试放置文件时,它会覆盖较旧的版本,但不会覆盖更新的版本。
导致 BinPlace 验证可执行文件。 LCFile 指定要用于进行此验证的本地化约束文件。
导致 BinPlace 在放置文件时创建硬链接,而不是复制文件。此选项仅在 NTFS 文件系统上提供。
导致 BinPlace 在复制任何可执行文件之前验证是否存在正确的符号。为了使用此选项,你的路径中必须存在 SymChk 工具。(SymChk 是 Windows 调试工具包的一部分。有关详细信息,请参阅 Windows 调试。)
导致 BinPlace 保留文件属性。默认情况下,BinPlace 将关闭存档属性。
为完整的符号文件(既包含公用符号又包含专用符号的符号文件)指定根目录。这还需要 -a、-x 和 -s 开关。有关详细信息,请参阅 BinPlace 目标目录。
指定要使用的根目标目录的子目录。在创建了目标目录时,将在根目标目录之后、类子目录之前插入 RootSubdirectory。有关详细信息,请参阅 BinPlace 目标目录。
指定放置文件的路径和文件名。如果未使用 -p 开关,BinPlace 将使用名为 \tools\placefil.txt 的位置。有关放置文件内容的说明,请参阅Place File Syntax。
注意 -p 开关和放置文件现在已过时,不应当使用。
阻止 BinPlace 使用日志文件。如果省略了 -q 开关,则由 BINPLACE_LOG 环境变量指定的文件将用作日志文件。
指定根目标目录。如果省略了此开关,则默认值将由 _NT386TREE(在基于 x86 的计算机上)、_NTIA64TREE(在基于 Itanium 的计算机上)或 _NTAMD64TREE(在基于 x64 的计算机上)环境变量来确定。有关详细信息,请参阅 BinPlace 目标目录。
指定符号文件的根目录。如果同时使用 -a 和 -x 开关,则将从符号文件中去除专用符号,去除了内容的符号文件将放在由 SymbolRoot 指定的目录中。如果你既希望放置去除了内容的符号文件又希望放置完整的符号文件,则应当使用 -a -x -s SymbolRoot -n FullSymbolRoot。有关详细信息,请参阅 BinPlace 目标目录。
测试模式。使用此开关时,将不复制任何文件,但 BinPlace 就会像在放置文件时那样,显示警告和错误消息。你可能希望同时使用 -v 开关来增加消息数。
导致 BinPlace 在类子目录后面附加 \up。这对于分离出单处理器 (UP) 驱动程序非常有用。另外,只要使用此开关,BinPlace 就不会拆分包含符号的可执行文件。有关详细信息,请参阅 BinPlace 目标目录。
详细模式。导致 BinPlace 显示更详细的错误、警告和进度消息。
导致 BinPlace 向符号树中添加 Windows 95 符号文件 (.sym)。
如果 BinPlace 遇到使用旧符号系统的文件,此开关会导致它删除可执行文件中的所有符号并将此信息移动到单独的符号文件中。有关详细信息,请参阅符号文件系统。在使用 -x 开关时,必须同时使用 -s 和 -a。
阻止 BinPlace 使用任何类子目录。目标目录将从根目标目录的文件类型子目录中单独创建。???有关详细信息,请参阅 BinPlace 目标目录。
取消 -x 开关。当你在多个目标上使用 BinPlace 时非常有用 -- 可以使用 binplace argumentsTarget1argumentsTarget2 形式的命令,由于命令行是从左到右分析的,因此 Target1 和 Target2 将受到不同参数的影响。(请参阅下面的“分析顺序”部分。)如果遇到 -z 开关,则会取消先前的所有 -x 开关所带来的影响。
-ci ReturnCode,Application,Argument,Argument, ...
导致 BinPlace 使用自定义应用程序来验证所有的可执行文件。如果你希望 BinPlace 使用某个其他应用程序来执行验证,则可以使用 -ci 开关。
ReturnCode 应当为在该应用程序发现可执行文件中有错误时,将返回的值。可以使用其他参数来启动该应用程序。这些参数都必须用逗号分隔。Application 指定程序的名称。这可以是任意数量的命令行参数。程序将使用一个命令行进行启动,该命令行中包括 Application,其后是所有的参数(用空格而非逗号分隔),最后是要检查的可执行文件的名称。
导致 BinPlace 仅放置那些设置了存档属性的文件。
阻止 BinPlace 放置 .dbg 文件。如果同时使用 -j 开关,则将阻止 BinPlace 放置那些指向 .dbg 文件的二进制文件。为了使用此选项,你的路径中必须存在 SymChk 工具。(SymChk 是 Windows 调试工具包的一部分。有关详细信息,请参阅 Windows 调试。)
导致 BinPlace 忽略放置文件并使用指定的 ClassPath 作为类子目录。有关详细信息,请参阅 BinPlace 目标目录。
导致 BinPlace 在日志文件中包括完整的 .pdb 路径。
导致 BinPlace 对正在放置的文件进行重命名。原始文件名(包括扩展名)将由 NewName 替换。(如果原始文件是正在拆分的可执行文件,则新符号文件将命名为原始文件名外加扩展名 .dbg。)
导致 BinPlace 通过从 PDB 符号文件中提取跟踪消息格式指令来创建跟踪消息格式 (.tmf) 文件。TMF 文件将放在由 BinPlace TRACE_FORMAT_PATH 环境变量指定的目录中。请参阅 BinPlace 宏和环境变量。
导致 BinPlace 将符号文件的目标目录中所出现的字符串“asms”替换为字符串“retail”。有关详细信息,请参阅 BinPlace 目标目录。
指定 BinPlace 将作用于的文件的完整路径和文件名。你可以列出任意数量的文件(用空格分隔)。如果路径和文件名中包含空格,则必须用引号将路径和文件名括起来。
如果文件名的前面有 at 符号 (@),则该文件名代表放置文件的名称。有关详细信息,请参阅下面的“在文件中提供参数”部分。
分析顺序
BinPlace 按照从左到右的顺序分析命令行。你可以指定多个选项,在后面指定一个 File 参数,之后是新选项,再往后是另一个 File 参数,依此类推。每当 BinPlace 遇到一个新选项时,它都将被采用,并覆盖以前看到的所有发生矛盾的选项。每当它遇到 File 说明符时,它将使用它已经在命令行上遇到的累计选项作用于该文件。
在文件中提供参数
可以将文本文件中的参数传递到 BinPlace。可以通过下列两种方法完成此任务:
-
可以在 BINPLACE_OVERRIDE_FLAGS 环境变量中指定文件名。每当运行 BinPlace 时,系统将读取此文件并将其中的内容用作参数。此文件中的参数将先于实际出现在 BinPlace 命令行上的参数进行分析。
-
你可以通过在文件名前面加上 at 符号 (@) 来在 BinPlace 命令行上指定文件名。当 BinPlace 在其命令行上看到一个以 at 符号开头的字符串时,它将提取该字符串,去掉 at 符号,然后查找具有此名称的文件。如果它找到此文件,它会将此文件的文本插入到以 at 符号开头的原始参数在命令行上的确切位置。由于 BinPlace 按照从左到右的顺序分析参数,因此你可以将此技术与多个 File 实例结合使用,从而针对多个具有不同选项的文件使用 BinPlace,而不必每次都键入所有的选项。(如果未找到此文件,BinPlace 会将原始字符串(包括 at 符号)视为 File 参数。)