好在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即可。
改完之後,重新編譯NBOOT,NBOOT.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://topic.csdn.net/u/20100225/11/9078806e-af09-4e55-8e00-ef30a16944f3.html