我的应用程序有时从网络共享开始,一些客户在运行应用程序时报告了外部异常C0000006。根据我的谷歌研究,这“可能”与图像被分页和无法从网络重新加载有关。解决方法是告诉Windows将完整的映像文件加载到交换中并通过设置IMAGE_FILE_NET_RUN_FROM_SWAP标志从那里运行它
我的应用程序还依赖于在运行时加载的各种.bpl和.dll库。其中只有一些可以由我改变,有些是由其他供应商提供的。如果exe设置了这个标志,那么这个库会发生什么?是否也加载到交换文件中,或者它们是否仍然被分页并在需要时重新加载?我是否还需要在库中包含此标志?
答案 0 :(得分:7)
该标志仅适用于设置它的PE模块。因此,在EXE中设置标志并不意味着该EXE加载的模块受标志影响。加载程序将根据该模块中指定的PE选项处理由EXE加载的每个模块(DLL,包等)。
因此,您需要在驻留在网络共享上的每个模块上设置PE标志。
对于它的价值,我建议同时添加IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
。