我试图在一个项目中的DLL之间共享一些数据,这个项目具有极其复杂的依赖结构(多个DLL)。
我希望能够将密钥与应用程序的一个部分中的某些数据相关联,然后通过在应用程序的其他部分中提供相应的密钥来提取该数据。在某种程度上,可以说我正在寻找类似于Java的System.setProperty()/ getProperty()的东西。
我确信Process API可以让我访问一个进程范围的缓冲区,但我没有运气。有什么想法吗?
(我知道干净的解决方案是引入一个新的DLL并将其正确链接到现有的DLL。不幸的是,这种类型的解决方案超出了我的团队的职责范围。)
答案 0 :(得分:1)
你不需要花哨的API。对于这种东西,Windows有一个更老的API。这些东西被称为“原子”。您可以将函数用作AddAtom
和FindAtom
。默认情况下,原子是整个过程。
答案 1 :(得分:0)
要清楚这里有一个 exe,只有一个进程中有多个DLL,但有多个模块。所以你不是在寻找进程间通信。
作为回答,我看到两个策略:
使用稍微有限的Windows API原子(基本上只是字符串数据)可以在进程内部或进程之间工作。
如果您编写的DLL包含您推测的SetProperty / getproperty功能,您不必再次编译所有其他DLL(这可能超出了您团队的规范) - 您只需要重新编译这些DLL的目前正在使用你的新功能(set / getproperty)(可能是你团队的力量)。所以这似乎是一个直接而有力的解决方案。