歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> WinCE6.0中Romimage.exe的BUG

WinCE6.0中Romimage.exe的BUG

日期:2017/3/1 9:15:11   编辑:Linux編程

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即可。

改完之後,重新編譯NBOOT,NBOOT.nb0果然出來了!

修改後的romimage.exe的下載地址:

Linux公社資源站下載:

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2016年資料/6月/5日/WinCE6.0中Romimage.exe的BUG/

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

romimage.exe所在的目錄為C:\WINCE600\PUBLIC\COMMON\OAK\BIN\I386。當然,如果不改romimage.exe,也可用cvrtbin得到nb0文件,在對應的BIB文件中添加相關代碼即可。最壞的解決辦法是將PB工程放在C盤,但前提是C盤足夠大。

Copyright © Linux教程網 All Rights Reserved