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

Posted CppSkill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC 利用DLL共享区间在进程间共享数据及进程间广播消息相关的知识,希望对你有一定的参考价值。

1、http://blog.csdn.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区域。如下图:

技术分享图片

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

 技术分享图片

 

2、

3、

4、

5、

 

以上是关于VC 利用DLL共享区间在进程间共享数据及进程间广播消息的主要内容,如果未能解决你的问题,请参考以下文章

C内存共享进程通信范例

linux进程间通信之System V共享内存详解及代码示例

记录一下

[转]Windows 下的进程间通讯及数据共享

进程间的数据共享

VC++ 进程间的通信