9

私のアプリケーションはネットワーク共有から開始されることがあり、一部の顧客はアプリケーションの実行時に外部例外C0000006を報告しました。私のGoogleの調査によると、これは画像がページアウトされ、ネットワークからのリロードに失敗したことに関連している可能性があります。この回避策は、完全なイメージファイルをスワップにロードし、そこからIMAGE_FILE_NET_RUN_FROM_SWAPフラグを設定して実行するようにWindowsに指示することです。

私のアプリケーションは、実行時にロードされるさまざまな.bplおよび.dllライブラリにも依存しています。私が変更できるのはそのうちのいくつかだけで、他のベンダーから提供されているものもあります。exeファイルにこのフラグが設定されている場合、このライブラリはどうなりますか?もスワップファイルにロードされますか、それとも必要に応じてページアウトされてリロードされますか?このフラグをライブラリにも含める必要がありますか?

4

1 に答える 1

9

フラグは、フラグを設定するPEモジュールにのみ適用されます。したがって、EXEにフラグを設定しても、そのEXEによってロードされたモジュールがフラグの影響を受けることを意味するわけではありません。EXEによってロードされる各モジュール(DLL、パッケージなど)は、そのモジュールで指定されたPEオプションに従ってローダーによって処理されます。

そのため、ネットワーク共有に存在する各モジュールにPEフラグを設定する必要があります。

その価値については、追加することをお勧めIMAGE_FILE_REMOVABLE_RUN_FROM_SWAPします。

于 2012-11-27T16:00:12.273 に答える