WIN32下利用内存映射文件实现进程间通信.pdfVIP

WIN32下利用内存映射文件实现进程间通信.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WIN32下利用内存映射文件实现进程间通信.pdf

维普资讯 12 WIN32下利用内存映射文件实现进程间通信 O八一科技 WIN32下利用内存映射文件实现进程问通信 范国林 李林谡 朱海鹏 (零八一总厂软件 室 广元 6280l7) 摘 要:本文介绍了VC++编译环境 下利用 内存映射文件实现WIN32进程间 的通信,并通过实例介绍实现过程。 关键词 :内存映射文件 文件内核对象 文件映射 内核对象 l 前言 在 Windows程序中,各个进程之间常常需要交换数据,进行数据通信。 基于 MFC类库的进程间通信方式通常有 :1)利用 内存映射文件;2)利用共享内存 DLL;3)用于传输 只读数据的WM_COPYDATA消息;4)直接调用 ReadProcessMemory 和WriteProcessMemory函数等。 本文就利用内存映射文件的方式实现WIN32进程间通信的方法和步骤作详细的探讨 和分析。 2 内存映射文件简介 在 WIN32下,每个进程在理论上都拥有 自己的4GB的地址空间,但并不代表它真正 拥有4GB的实际物理内存 ,而只是操作系统利用 CPU的内存分配功能提供的虚拟地址空 间。一般情况下,绝大多数虚拟地址并没有物理内存与它对应。在真正可以使用这些地址 空间之前,还要由操作系统提供实际的物理内存。内存映射文件也同虚拟内存 。可以用来 保留对应一个地址空间的区域,并将物理存储器提交给该区域。一旦该文件被映射到地址 区域 ,就构成内存映射文件 ,从而可以访问它 ,就像整个文件已经加载到内存一样。有了 内存映射文件 ,同一台计算机上运行的多个进程就能够相互之间共享数据。WIN32的这 种内存映射机制,使得内存映射文件方式成为单个计算机上多个进程问通信的最有效的方 法 。 3 内核对象概念 内核对象可以供系统和应用程序使用来管理各种各样的资源。比如进程、线程和文件 等。 作为一个 Windows软件开发人员,需要经常创建 、打开和操作各种内核对象 。系统 维普资讯 O八一科技 WIN32下利用内存映射文件实现进程间通信 l3 要创建和操作若干类型的内核对象,比如存取符号对象、事件对象、文件对象、文件映射 对象、I/O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标 对象、线程对象和等待计时对象等 。这些对象都是通过调用函数来创建的。例如 ,Create. FileMapping函数可使系统能够创建一个文件映射 内核对象。每个 内核对象只是内核分配 的一个 内存块,并且只能由该 内核访问。该内存块是一种数据结构,它的成员负责维护该 对象的各种信息。 由于内核对象的数据结构只能被内核访问.因此应用程序无法在 内存 中找到这些数据 结构并直接改变它们的内容。为 了能让我们的应用程序操作这些内核对象,Windows提供 了一组函数 .可以对这些内核对象进行访 问。 4 使用 内存映射文件的方法 使用 内存映射文件的操作步骤如下 : a)创建或打开一个文件内核对象,用于标识磁盘上你将用作内存映射文件的文 件 : b)创建一个文件映射 内核对象,并标 明该文件的大小和访问该文件的方式 ; c)让系统将文件映射对象的全部或一部分映射到进程地址空间中。 当内存映射文件的使用完成后 ,必须使用下面这些步骤将它清除: 1)在运行 的进程地址空间中撤销文件映射 内核对象的映射 : 2)关闭文件映射内核对象 ; 3)关闭文件内核对象。 5 应用实例 本文以一个北斗定位接收程序和定位应用程序为例,介绍使用内存映射文件实现进程 间通信的步骤和方法。 步骤一 :创建定位数据结构体 struet BDRecv Poslnfo Data _

文档评论(0)

weiwoduzun + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档