2011-12-20 35 views
3

我有一個我想通過USB閃存驅動器分發的MFC應用程序。 該應用程序的一個要求是,當用戶拔下USB閃存時,MFC應用程序應該退出本身。強制Windows操作系統在執行應用程序之前加載整個應用程序可執行文件(.exe)

我添加了代碼來檢測USB閃存的移除並在出現這種情況時退出應用程序。 當USB閃存拔出時,應用程序大部分時間都會自動退出。 但有時(50%),我會得到一個「AppName.exe已停止工作。」錯誤消息在Windows 7中。當在調試器下運行時,我得到更多的細節,這是「第一次機會例外:0xC0000006:在頁面錯誤。」錯誤。

經過一些Google搜索後,該錯誤似乎是由於底層媒體被刪除以及內存管理器無法從媒體中讀取(本例中爲USB閃存)所致。 文獻1:In page error 0xc0000006 文獻2:http://blogs.msdn.com/b/oldnewthing/archive/2008/12/04/9172708.aspx

這MFC應用程序是一個小的單個可執行文件的程序。我的問題是如果有一種方法可以強制Windows操作系統在執行之前將整個.exe文件加載到內存中。我的想法是,如果我可以讓Windows在執行之前將整個程序加載到內存中,那麼當USB閃存被移除並且不需要的錯誤消息問題可能會消失時,內存管理器將不需要訪問該磁盤。

感謝您的幫助!

+2

只需將文件複製到用戶的%TEMP%文件夾並從那裏執行即可。即使你將它加載到內存中一次,如果其他應用程序請求,操作系統總是可以卸載內存塊。 – 2011-12-20 02:24:48

+0

感謝您的意見和建議,Seva。我認爲這會奏效。 – ytw 2011-12-20 02:34:06

+0

但是,對於此版本的應用程序,我希望有一種快速方法可以抑制「AppName.exe已停止工作」。來自Windows 7的錯誤消息。可以嗎?謝謝。 – ytw 2011-12-20 02:36:18

回答

8

將程序與/SWAPRUN option鏈接。也可以作爲EditBin.exe選項稍後使用。

相關問題