9

我的应用程序有时是从网络共享启动的,一些客户在运行应用程序时报告了外部异常 C0000006。根据我的谷歌研究,这“可能”与图像被分页和无法从网络重新加载有关。一种解决方法是告诉 Windows 将完整的图像文件加载到交换中并通过设置 IMAGE_FILE_NET_RUN_FROM_SWAP 标志从那里运行它

我的应用程序还依赖于在运行时加载的各种 .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 回答