通过命令行使用 BinPlace 以及错误处理!

要点  本主题中的示例介绍 BINPLACE_PLACEFILE 宏和 BinPlace place file 的用法。此宏和文件在 Windows 7 版本的 Windows 驱动程序工具包中已过时,并且以后版本的 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。此文件的类目录在放置文件中指定为 appendix。文件类型子目录为 cab(要移动的文件的扩展名)。因此,此文件将被复制到位置 d:\projectroot\appendix\cab\extra.cab。

现在,在可执行文件及其符号文件上使用 BinPlace。若要如此,请指定可执行文件的文件名,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

此时,类子目录为 retail。对于可执行文件,此目录名称为“do not use a class subdirectory”的代码,因此它被置于 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 开关,因此不在任何位置放置完整符号文件。

上述是微软官方说明,但是实际操作的过程中会报错:

此处代码是自己工程生成的

D:\WinDDK\7600.16385.1\bin\x86>binplace -a -x -s d:\stripped  d:\full  D:\jdtest\test\Debug\application.exe
binplace D:\jdtest\test\Debug\application.exe
BINPLACE : error BNP0000: no version resource detected for "D:\jdtest\test\Debug\application.exe"
BINPLACE : fatal error BNP0000: Unable to place file D:\jdtest\test\Debug\application.exe - exiting.

错误原因是由于 application.exe  资源里面没有插入版本号

、右键工程属性,点击 “添加资源” 选择 vesion。再编译即可!!

猜你喜欢

转载自blog.csdn.net/jangdong/article/details/81287926
今日推荐