利用内存映射文件在两个进程间共享数据

转载 2008年10月03日 13:04:00
  1.   private
  2.     hMapFile: THandle;
  3.     MapFilePointer: Pointer;
  4.   public
  5.     { Public declarations }
  6.   end;
  7. var
  8.   Form1: TForm1;
  9. implementation
  10. {$R *.DFM}
  11. procedure TForm1.FormCreate(Sender: TObject);
  12. begin
  13.   hMapFile := CreateFileMapping (
  14.     $FFFFFFFF// 特殊内存映射句柄
  15.     nil, page_ReadWrite, 0,10000,
  16.     'DdhDemoMappedFile'); // 文件名
  17.   if hMapFile <> 0 then
  18.     MapFilePointer := MapViewOfFile (
  19.       hMapFile, // 上面映象文件的句柄
  20.       File_Map_All_Access,
  21.       000// 访问整个映象文件
  22.   else
  23.     ShowMessage ('hMapFile = 0');
  24.   if MapFilePointer = nil then
  25.     ShowMessage ('MapFilePointer = nil');
  26. end;
  27. procedure TForm1.BtnWriteClick(Sender: TObject);
  28. begin
  29.   StrCopy (PChar (MapFilePointer),
  30.     PChar (EditWrite.Text));//把内容写入共享内存
  31. end;
  32. procedure TForm1.BtnReadClick(Sender: TObject);
  33. var
  34.   S: string;
  35. begin
  36.   S := PChar (MapFilePointer);//从共享内存读出内容
  37.   EditRead.Text := S;
  38. end;

用这种方法,不但可以在不同的程序之间共享数据,还可以
在同一程序的不同实例间共享数据。为了及时通知其它进程
共享数据的变化,可以自定义一条用户消息,通过发消息来
实现。

MFC-内存映射实现数据共享

做两个进程,一个进程把数据写到内存空间,一个进程从内存空间中读取数据.写数据的进程: 1.定义两个成员变量 HANDLE m_hMapObject;//映射对象句柄 LPTSTR m_...
  • qq_18297675
  • qq_18297675
  • 2016年03月31日 19:51
  • 1849

VC 共享内存实现进程间大数据的交换

作者:中国电波传播研究所青岛分所:郎锐     在Windows操作系统下,任何一个进程不允许读取、写入或是修改另一个进程的数据(包括变量、对象和内存分配等),但是在某个进程内创建的文件映射对象的视图...
  • element_storm
  • element_storm
  • 2013年11月21日 10:48
  • 2135

分析linux共享内存的实现

Linux对共享内存的实现,在2.6采用了内存映射技术。对于内存共享,主要集中在三个内核函数,他们是do_shmat,sys_shmat和sys_shmdt。其中,sys_shmat调用了do_shm...
  • joejames
  • joejames
  • 2014年07月18日 21:50
  • 4885

利用内存映射文件在进程间共享数据

闲暇时间随便写了个小例子,代码很简单,有注释 代码如下: //利用内存文件映射,在2个进程中共享数据 //首先一个进程1创建 内存映射文件,并且输入想要通信的数据 //然后,另一个进程2Creat...
  • zicheng_lin
  • zicheng_lin
  • 2012年11月06日 09:40
  • 1265

Win32汇编使用内存映射文件在进程间共享数据

在Windows程序中,各个进程之间为了协同工作,常常需要交换数据,进行数据通讯。Windows 下有很多方法实现进程间通讯,比如用 socket,管道(Pipe),信箱(Mailslot),等等。但...
  • lixiang19910909
  • lixiang19910909
  • 2015年09月17日 11:26
  • 568

c++ 内存映射文件进程间共享数据

int main(int argc, char *argv[])   {       //RecursiveDelete("C:\\20_128\\");       //SelfRun("runMo...
  • xbsoul
  • xbsoul
  • 2016年01月11日 13:55
  • 2075

使用内存映射文件在进程间共享数据

Windows提供了多种机制允许进程之间能够共享数据。比如,WM_COPYDATA消息,剪贴板,邮件槽(mailslot),管道(pipe),套接字(socket)等。在同一台机器上共享数据库最底层的...
  • lihao21
  • lihao21
  • 2014年08月08日 11:15
  • 2923

使用内存映射文件在进程间共享数据

说道内存映射文件,我感觉好多人都对此不是很理解(我也是其中一个。。。),经过不断地学习,我自己对此也有一点小小的理解,(也可以细看我转发的一篇博文,图文并茂,我深受启发http://blog.csdn...
  • qq_22642239
  • qq_22642239
  • 2016年05月26日 19:31
  • 684

用内存映射文件在进程中共享数据

用文件映射(File Mapping)实现进程间内存共享 http://blog.csdn.net/starlee/article/details/1633762 我们知道,在Windows中的每...
  • rheostat
  • rheostat
  • 2012年07月27日 21:43
  • 728

.NET 4.0中使用内存映射文件实现进程间通讯

  • 2009年08月12日 15:04
  • 544KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用内存映射文件在两个进程间共享数据
举报原因:
原因补充:

(最多只允许输入30个字)