从命令行使用 BinPlace

重要 本主题中的示例讨论如何使用 BINPLACE_PLACEFILE 宏和 BinPlace放置文件。 此宏和文件在 Windows 驱动程序工具包的 Windows 7 版本中已过时,将来的 WDK 版本中可能不支持。

本主题提供从命令行使用 BinPlace 的示例。

首先,可以按如下所示设置根目标目录:

set _NTTREE=d:\ProjectRoot

然后,可以按以下方式设置位置文件的路径和文件名:

set BINPLACE_PLACEFILE=d:\mystuff\myplacefile.txt

让文件的内容d:\mystuff\myplacefile.txt如下所示:

; This is a simple place file.
commonmodule.dll   retail
application.exe    files\bin
mydriver.sys       *\drivertree
extra.cab          appendix

现在,可以使用以下命令运行 BinPlace:

binplace g:\somelocation\extra.cab

由于 extra.cab 不是可执行文件,因此 BinPlace 将仅移动它。 根目标目录为 d:\projectroot。 此文件的类目录在放置文件中指定为 附录。 文件类型子目录是 cab, () 移动文件的文件扩展名。 因此,此文件将复制到d:\projectroot\appendix\cab\extra.cab位置。

现在,在可执行文件及其符号文件上使用 BinPlace。 为此,请指定可执行文件名称 -- BinPlace 将找到关联的符号文件。

将可执行文件名称传递到 BinPlace 时,它会在可执行文件所在的同一目录中查找其符号文件。 如果找不到它们,则会读取存储在可执行文件中的 CodeView 记录;如果它在该记录中找到符号文件路径,则查找该路径中的符号文件。

注意 如果显式指定符号文件名,BinPlace 将仅移动它,而不对其进行处理。

binplace -a -x -s d:\stripped -n g:\full g:\builddir\application.exe

可执行文件使用与以前相同的根目标目录。 它的类目录是 files\bin。 因此,它放置在d:\projectroot\files\bin\application.exe中。

符号文件位于两个位置。 完整的符号文件 (包括私有符号和公共符号) 将转到 g:\full\files\bin\exe\application.pdb。 去除符号文件 (仅包含公共符号) 将转到 d:\stripped\files\bin\exe\application.pdb。

现在,请在 commonmodule.dll 上使用类似的命令:

binplace -a -x -s d:\stripped -n g:\full g:\builddir\commonmodule.dll

这一次,类子目录是 零售的。 对于可执行文件,此目录名称是“不使用类子目录”的代码,因此将其放置在d:\projectroot\application.exe中。 符号文件放置在 g:\full\retail\dll\application.pdb 和 d:\stripped\retail\dll\application.pdb 中。

最后,在 mydriver.sys 上使用 BinPlace 并省略 -n 开关:

binplace -a -x -s d:\stripped g:\builddir\mydriver.sys

此处的类子目录是 */drivertree。 对于可执行文件,星号 (*) 将替换为处理器类型。 假设你在 x86 计算机上运行,可执行文件将放置在 d:\projectroot\i386\drivertree\application.exe 中。 去除的符号文件放置在 g:\full\drivertree\sys\application.pdb 中,因为符号文件的星号将被忽略。 由于省略 了 -n 开关,因此不会将整个符号文件放置在任何位置。