2011-12-20 19 views
3

私はUSBフラッシュドライブ経由で配布したいMFCアプリケーションを持っています。 アプリケーションの要件の1つは、ユーザーがUSBフラッシュのプラグを抜くと、MFCアプリが終了する必要があるということです。アプリケーションを実行する前にWindows OSにアプリケーション実行ファイル(.exe)をロードさせます。

USBフラッシュを検出してそのアプリケーションが終了したときに終了するコードを追加しました。 USBフラッシュが抜かれていると、ほとんどの場合アプリは正常に終了します。 しかし、時々(50%)、私は "AppName.exeが動作を停止した"を取得します。エラーメッセージが表示されます。デバッガの下で実行すると、詳細が表示され、「最初の例外:0xC0000006:ページエラーです」と表示されます。エラー。

このエラーは、基本となるメディアが削除され、メモリマネージャがメディア(この場合はUSBフラッシュ)から読み取れないことが原因であるようです。 参考1:In page error 0xc0000006 参考2:http://blogs.msdn.com/b/oldnewthing/archive/2008/12/04/9172708.aspx

このMFCアプリは小さな単一の実行可能ファイルのプログラムです。私の質問は、実行する前にWindows OSにメモリ全体に.exeファイルを読み込ませる方法があるかどうかです。私の考えは、実行前にプログラム全体をメモリにロードするようにWindowsを設定すると、USBフラッシュが削除され、不要なエラーメッセージの問題が消え去ったときに、メモリマネージャがディスクにアクセスする必要がないということです。

ありがとうございました!

+2

ファイルをユーザーの%TEMP%フォルダにコピーしてそこから実行するだけです。一度メモリにロードされたとしても、OSは他のアプリケーションが要求した場合に常にメモリブロックをアンロードできます。 –

+0

コメントと提案に感謝、Seva。それはうまくいくと思う。 – ytw

+0

しかし、今回のリリースのアプリでは、「AppName.exeが機能しなくなりました」というのをすばやく回避する方法があることを願っています。 Windows 7からのエラーメッセージです。ありがとう。 – ytw

答えて

8

プログラムを/SWAPRUN optionにリンクします。後で行うには、EditBin.exeオプションとしても利用できます。

関連する問題