加载的DLL的路径是否会影响共享数据段的可用性?

时间:2013-11-04 18:12:21

标签: windows dll

我正在为外部硬件开发一个旧的DLL接口库。

此库使用共享数据段(#pragma data_seg(...))来共享进程间硬件状态的结构。

我认为,基于this,DLL只被Windows加载一次,但我发现加载DLL的进程必须从同一路径加载 他们之间的整体沟通能够正常运作。甚至库的文档都说明了这一点。

the linked page中明确报告:

  

如果已在内存中加载了具有相同模块名称的DLL,则系统会在解析加载的DLL之前检查重定向和清单,无论它在哪个目录中。系统不会搜索DLL。

所以我有点困惑...... DLL的位置是否会影响共享数据段(从不同进程的角度来看)?

证据表明情况确实如此,但我是否误解了文件?

1 个答案:

答案 0 :(得分:0)

报告Hans Passant时,引用仅适用于多次加载DLL的进程。

在我的问题的情况下,DLL被每个进程加载一次。在这种情况下,了解系统中DLL的确切搜索顺序可能很重要。

正如linked文章所述,这也取决于系统配置(例如,如果 SafeDllSearchMode 是否处于活动状态)。