设为首页 加入收藏

TOP

WinCE6.0中Romimage.exe的BUG
2016-06-12 14:17:38 】 浏览:110
Tags:WinCE6.0 Romimage.exe BUG

WinCE6.0Romimage.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的设置。



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



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



修改后的romimage.exe的下载地址:



Linux公社资源站下载:



------------------------------------------分割线------------------------------------------





具体下载目录在 /2016年资料/6月/5日/WinCE6.0中Romimage.exe的BUG/




------------------------------------------分割线------------------------------------------



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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇S3C2410下WinCE6.0的启动过程详解 下一篇WinCE6.0的EBOOT概要

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目