https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff550380(v=vs.85).aspx
注意 放置文件现在已过时,因此不应该使用。。
放置文件是一个文本文件,BinPlace 读取该文件来确定与放置的文件关联的子目录。
该文件的路径和名称由 -p PlaceFile 命令行参数指定。如果未使用此参数,则默认值为 \tools\placefil.txt。放置文件可以包含任何数量的行。每行列出一个文件和一个类子目录。列出文件不会导致 BinPlace 采取任何操作。但是,只要在命令行上为 BinPlace 提供了文件名,那么它将打开该放置文件以查看该文件是否列出。如果是这样,BinPlace 将对该特定文件使用在放置文件中指定的类子目录。
放置文件的每一行格式都相同。
FileName Class[:Class[...] [ ; Comment ]
放置文件中的每一行都遵循以下规则:
- 每一行都必须以 FileName 字段开头。
- FileName 和 Class 字段必须用一个或多个空格分隔。
- 如果行上的任何位置出现分号,那么分号右侧的所有内容都将被视为注释。
- 以分号开头的空白行和注释行都是允许的。
对 FileName 和 Class 字段的解释如下:
参数
指定 BinPlace 可以对其起作用的文件名的字段。FileName 必须包含文件扩展名,但不得包含文件路径。(文件路径将在 BinPlace 命令行上指定。)
指定用于该文件的类子目录的字段。除非使用 -y 或 -:DEST 命令行开关,否则 BinPlace 会在通过获取根目标目录,加上类子目录,然后加上文件类型子目录而创建的目录中放置一个文件。有关详细信息,请参阅 BinPlace 目标目录。
Class 不应该以反斜杠开头或结尾。目录名称不得包含空格。有些特殊字符串可以在 Class 值中使用。放置可执行文件和符号文件时,该字符串的效果不同。下表显示了这些字符串的结果。
对于所有版本:
字符串 | 对可执行文件的效果 | 对符号文件的效果 |
---|---|---|
retail | 被忽略。该目录级别将被跳过。 | 视为名为 retail 的文本目录。 |
* |
在 x86 计算机上:i386。 在基于 Itanium 的计算机上:IA64。 在基于 x64 的计算机上:AMD64。 | 被忽略。该目录级别将被跳过。 |
system | 成为 system32。 | |
system16 | 成为 system。 | |
windows | 成为“.”被忽略。该目录级别将被跳过。 | 符号路径为 retail。 |
drivers | 成为 system32\\drivers。 | |
drvetc | 成为 system32\\drivers\\etc。 | |
config | 成为 system32\\config。 |
对于 x86 版本:
字符串 | 对可执行文件的效果 | 对符号文件的效果 |
---|---|---|
hal | 成为 system32。 | |
printer | 成为 system32\\spool\\drivers\\w32x86。 | |
prtprocs | 成为 system32\\spool\\prtprocs\\w32x86。 |
对于 AMD64 版本:
字符串 | 对可执行文件的效果 | 对符号文件的效果 |
---|---|---|
hal | 成为“..”。例如,如果根目标目录为 C:\Binaries\Amd64,则会将该文件放置在 C:\Binaries 中。 | 去除符号路径中的一个目录。 |
printer | 成为 system32\\spool\\drivers\\w32amd64。 | |
prtprocs | 成为 system32\\spool\\prtprocs\\w32amd64。 |
对于 IA64 版本:
字符串 | 对可执行文件的效果 | 对符号文件的效果 |
---|---|---|
hal | 成为“..”。 | 去除符号路径中的一个目录。 |
printer | 成为 system32\\spool\\drivers\\w32ia64。 | |
prtprocs | 成为 system32\\spool\\prtprocs\\w32ia64。 |
除非特别声明,否则符号路径将被截断,以便只包含该路径中的第一个目录。例如,如果使用 BinPlace 移动名为 Build.exe 的 x86 文件(它的目标类为 printer),那么你可能会使用以下命令语法:
binplace -r BinaryRoot -xa -s SymbolsDir1 -n SymbolsDir2 SourceFileLocation\build.exe
该命令将导致以下输出树:
<SymbolsDir1>\system32\exe\build.pdb <SymbolsDir2>\system32\exe\build.pdb <BinaryRoot>\system32\spool\drivers\w32x86\build.exe
对于 AMD64 和 IA64 版本,请小心使用 hal 类,因为 BinPlace 结果可能不是你想要的结果。例如,如果根目标目录为 C:\Binaries\Amd64 并且指定了 hal类,则会将该文件放置在 C:\Binaries 中,而不是放置在你可能希望使用的处理器特定目录中。
如果希望将某个文件放置在多个位置,则可以包含 Class 的多个实例,用冒号分隔。目录和冒号之间不得有空格。例如:
someprogram.exe dir1\dir2\dir3:otherdir1\otherdir2 ; To two locations
BinPlace 将忽略分号后面的任何文本。