1.概念、好处及原理:书P374

2.内存映射文件是多个进程进行通信的最有效的方法

3.使用函数:

创建内存映射文件对象:CreateFileMapping ,决定是在磁盘文件上建立内存映射文件还是在页文件中建立进程间共享的映射

打开已创建好的对象:OpenFileMapping

映射视图:MapViewOfFile ,分配线性地址空间,映射文件内容,开始使用时才进行物理内存分配

撤销映射:UnmapViewOfFile

立即写入磁盘:FlushViewOfFile

4.使用内存映射文件读写文件步骤:

1.调用CreateFile 获得文件句柄 hFile
2.调用CreateFileMapping 获取hFile 对应的内存映像对象hFileMap
3.调用MapViewOfFile 获取一个区域或者整个文件对应的内存指针lpMemory
4.使用指针进行操作
5.调用UnmapViewOfFile 解除映射
6.调用CloseHandle 分别关闭 hFileMap 和 hFile

5.内存映射文件在进程间共享数据的步骤:

1.调用OpenFileMapping打开一个命名的内存映射文件对象,得到hFileMap。成功跳到步骤3,失败则说明需要创建第一个副本,跳到步骤2
2.调用CreateFileMapping创建命名的内存映射文件,得到hFileMap
3.调用MapViewOfFile 得到lpMemory
4.使用指针读写共享数据
5.调用UnmapViewOfFile 解除视图映射,
6.调用CloseHandle 关闭hFileMap

5与4的区别是:无需打开和关闭文件,但要OpenFileMapping;另外,建立内存映射文件时不是使用文件句柄,而是使用命名的方法

Win32汇编——内存映射文件相关推荐

  1. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...

    进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...

  2. 内存映射文件——Windows核心编程学习手札之十七

    内存映射文件 --Windows核心编程学习手札之十七 与虚拟内存一样,内存映射文件保留地址空间,并将物理存储器提交给该区域,差别在于所提交的物理存储器是磁盘上有文件存在的空间,而非系统的页文件,一旦 ...

  3. C#内存映射文件学习总结

    C#内存映射文件学习 http://www.cnblogs.com/flyant/p/4443187.html 内存映射文件是由一个文件到进程地址空间的映射. C#提供了允许应用程序把文件映射到一个进 ...

  4. VC++中使用内存映射文件处理大文件

    引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile().WriteFile().ReadFile() ...

  5. 内存映射文件之剖析(一)

    内存映射文件之剖析 作者:xrbeck 内存映射文件(Mapping File)是Windows内存管理中的重要一环,也是编程 技术中比较高级的一个话题.目前关于这方面的资料比较少,而其实内存映射 文 ...

  6. 内存映射文件使用详细

    http://www.cppblog.com/woaidongmao/archive/2008/12/26/70439.html 摘要: 本文通过内存映射文件的使用来对大尺寸文件进行访问操作,同时也对 ...

  7. 数字图像处理 使用C#进行图像处理六 内存映射文件

    一.内存映射文件概述 不论32位系统还是64位系统,机器内存毕竟是有限的,如果要处理大文件的话,不可能全部加载到内存中进行处理,所以就需要用到内存映射文件. 内存映射文件将文件的内容映射到应用程序的逻 ...

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

    int main(int argc, char *argv[])   {       //RecursiveDelete("C:\\20_128\\");       //Self ...

  9. 数据共享,内存映射文件和虚拟内存,共享内存

    一.内存映射 内存映射文件允许开发人员预定一块地址空间区域并给区域调拨物理存储器.内存映射文件的物理存储器来自磁盘已有的文件,而不是来自系统的页交换文件.一旦把文件映射到地址空间,就可以对它进行访问, ...

最新文章

  1. 数据量很大的排序问题 大量数据如何排序
  2. diskgeniusv4.4.0_Visual Basic6.0
  3. java学习(127):finally语句
  4. 27年前研发出国内首台小型机的浪潮,如何怎么样了?
  5. 华为紧急调试鸿蒙;首个 5G 全覆盖国家诞生;Flutter 1.7 正式发布 | 极客头条
  6. html网站地图在线生成,网站地图(sitemap)在线制作工具
  7. 46. 避免 CSS 表达式(7)
  8. mysql中的replication_MySQL Replication(主从服务器)配置实例
  9. 华为路由器交换机配置命令大整合,非常全,附pdf下载!
  10. 切割钢板计算机软件,板材切割优化软件钢板开料套料软件 V1.0 官方版
  11. 【机器学习】二次规划
  12. signature=c9b7b92b79e9a32ac6be9993bfe5df5a,这字幕= =太销魂了
  13. 爱立信软件测试实习生面试
  14. 一文搞懂SPI通信协议
  15. Latex/CTex/WinEdt常见错误“! Improper alphabetic constant.”
  16. 开发一个安卓App-计算器-改色换肤(完结篇)
  17. R Failed to install 'unknown package' from GitHub: schannel: failed to receive handshake, SSL/TLS
  18. String 字符串之截取
  19. 怎样在Mac或Windows上的Parallels中删除虚拟机?
  20. 系统崩溃!win10系统修复和数据恢复方法总结

热门文章

  1. linux发布成服务,linux服务简单部署
  2. 8考勤填报_公司考勤管理制度
  3. ftrace跟踪内核_用Ftrace跟踪内核模块
  4. python批量巡检服务器_python批量服务器巡检
  5. springboot 指定 logback_spring boot与日志
  6. win10家庭版安装iis 微软web服务器 windows安装IIS web服务器
  7. CSDN写博客图片的放大、缩小、去水印、居中
  8. 2020年最好用的手机是哪一款_2020年旗舰手机盘点,这七款优点明显,你最喜欢哪一款?...
  9. 学习pytorch的一些自己犯过的错误而总结的注意事项,估计其他也会使用
  10. mysql search yum_mysql的yum安装与配置