WinCE6.0中Romimage.exe的BUG

    WinCE6.0 Romimage.exe 依然存在BUG ,跟WinCE5.0 一样。当新建的工程和PB 的安装目录不在同一分区时就不能正确生成nb0 文件。本以为WinCE6.0 已经解决这个问题,不想饱汉不知饿汉饥,他们似乎没有发现这个BUG ,也就不可能修复了。

       好在WinCE6.0开源,在Private的目录下找到了对应的源代码目录,打算修改代码,重新编译一个romimage.exe。看了半天,没找到什么线索,貌似少一些文件。只能另辟蹊径了。

       先找蛛丝马迹。在build.log找到一点线索,如下图所示,“failed moving temp file”!不能生成nb0文件,问题就在这。

利用IDA反汇编romimage.exe。顺藤摸瓜,找到“failed moving temp file”,如下图所示。可以看到,是在调用MoveFileExW()时出错的。

查了一下MoveFileExW()的用法,结合BUG的现象,不难发现,原来是参数dwFlags使用不正确。需要设置MOVEFILE_COPY_ALLOWED位。MOVEFILE_COPY_ALLOWED的功能如下:

     If the file is to be moved to a different volume, the function simulates the move by using the CopyFile and DeleteFile functions.

       显然,原来的程序中只设置了MOVEFILE_REPLACE_EXISTING位,为了支持不同分区的文件拷贝,需要增加MOVEFILE_COPY_ALLOWED的设置。

修改方法:将push 1中的1改为3即可。

  改完之后,重新编译NBOOTNBOOT.nb0果然出来了!

修改后的romimage.exe的下载地址:http://files.cnblogs.com/we-hjb/romimage.rar 。romimage.exe所在的目录为C:/WINCE600/PUBLIC/COMMON/OAK/BIN/I386。当然,如果不改romimage.exe,也可用cvrtbin得到nb0文件,在对应的BIB文件中添加相关代码即可。最坏的解决办法是将PB工程放在C盘,但前提是C盘足够大。

 

http://www.urbetter.com  深圳友坚科技

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值