【转】VC 利用DLL共享区间在进程间共享数据及进程间广播消息

时间:2024-06-03 21:36:44

1、http://blog.****.net/morewindows/article/details/6702342

在进程间共享数据有很多种方法,剪贴板,映射文件等都可以实现,这里介绍用DLL的共享区间在进程间共享数据,及共享数据有变化时及时的反馈给各相关进程。

一.在DLL中设置共享区间

在DLL中是用数据段来实现共享区间的,有了这个共享区间,各进程可以方便的共享数据。

1.先用#pragma data_seg(Name)设置名为Name的数据段。

2.再用#pragma comment(linker, "/SECTION:Name,RWS")设置名为Name的数据段属性。/SECTION就表示为这是一个数据区间,R——Read读,W——Write写,S——Share共享。

如:

const int MAXSTRINGLEN = 1000;

#pragma data_seg("ShareData")

int iTotal = 0;

char szString[MAXSTRINGLEN] = {'\0'};

#pragma data_seg()

#pragma comment(linker, "/SECTION:ShareData,RWS")

注意数据一定要先初始化,否则无效。再写DLL的导出函数来操作数据如添加字符,得到字符串或直接得到字符串指针。

可以用dumpbin /SUMMARY test001.dll来查看新创建的ShareData区域。如下图:

【转】VC 利用DLL共享区间在进程间共享数据及进程间广播消息

注意段的名字被截断了,再输入dumpbin /SECTION:ShareDat test001.dll查看段的详细信息,如下图:

 【转】VC 利用DLL共享区间在进程间共享数据及进程间广播消息

2、

3、

4、

5、