内存映射文件共享数据原理:系统调用CreateFileMapping之后,以后其它进程可以通过句柄命名来打开另一进程的内存映射文件映射句柄,得到这个句柄之后通过映射(MapViewOfFile)来访问共享数据。

// ProcessTransCreateFileMap.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <tchar.h>
using namespace std;#define MAX_SIZE_SHARE 1024
int _tmain(int argc, _TCHAR* argv[])
{HANDLE hFileMap = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,MAX_SIZE_SHARE,TEXT("TestFileMap"));if(hFileMap != NULL){if(::GetLastError() == ERROR_ALREADY_EXISTS){PBYTE pView = (PBYTE)MapViewOfFile(hFileMap,FILE_MAP_READ | FILE_MAP_WRITE,0,0,0);if(pView != NULL){TCHAR szBuf[1024] = {0};_tcscpy_s(szBuf,1024,(TCHAR * )pView);wcout<<L"the other process data is :"<<szBuf <<endl;UnmapViewOfFile(pView);}else{wcout<<L"map failed!"<<endl;}::CloseHandle(hFileMap);}else{PBYTE pView = (PBYTE)MapViewOfFile(hFileMap,FILE_MAP_READ | FILE_MAP_WRITE,0,0,0);if(pView != NULL){TCHAR szBuf[] = {TEXT("this is a demo!!!!")};ZeroMemory(pView,MAX_SIZE_SHARE);CopyMemory(pView,szBuf,(_tcslen(szBuf) + 1) * sizeof(TCHAR));cout<<"already write a data "<<endl;UnmapViewOfFile(pView);}elsewcout<<L"map failed!"<<endl;}}system("pause");return 0;
}

使用内存映射文件来共享数据相关推荐

  1. 【java】java中内存映射文件和IO

    转载:https://leokongwq.github.io/2017/02/25/java-memorymapped-file-and-io.html 对大多数Java开发人员来说,Java中的内存 ...

  2. 8.4 内存映射文件

    与虚拟内存相似,内存映射文件保留了一个地址空间区域,在需要时将它提交到物理存储器.它们之间的不同点是内存映射文件提交到物理存储器的数据来自磁盘上相应的文件,而不是系统页文件.一旦文件被映射,就可以认为 ...

  3. Boost.Interprocess.file_mapping内存映射文件

    什么是内存映射文件? 文件映射是文件内容与进程地址空间的一部分的关联.系统创建一个文件映射关联文件和进程的地址空间.映射区域是进程用来访问文件内容的地址空间的一部分.一个文件映射可以有多个映射区域,以 ...

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

    数据共享方法是通过让两个或多个进程映射同一个文件映射对象的视图来实现的,这意味着它们将共享物理存储器的同一个页面.因此,当一个进程将数据写入一个共享文件映射对象的视图时,其他进程可以立即看到它们视图中 ...

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

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

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

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

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

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

  8. windows笔记-内存映射文件

    Windows提供了3种进行内存管理的方法: • 虚拟内存,最适合用来管理大型对象或结构数组. • 内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行的多个进程之间共享数据. ...

  9. 内存映射文件(File Mapping)API

    1.HANDLE CreateFileMapping(  HANDLE                  hFile,              // 一个文件句柄  LPSECURITY_ATTRI ...

最新文章

  1. python UnicodeEncodeError 编码错误总结
  2. python画动图-利用Python如何制作好玩的GIF动图详解
  3. EditText / This text field does not specify an inputType or a hint
  4. Android7.0 Doze模式分析(一)Doze介绍 amp; DeviceIdleController
  5. 被边缘化的“卓越亚马逊”
  6. 删除链表重复节点 python_python无序链表删除重复项的方法
  7. [mybatis]Configuration XML_typeAliases and Alias
  8. 学习《PythonWeb开发实战(董伟明)》中文PDF+源代码
  9. 光学字符识别 android,基于Android的光学字符识别研究与实现
  10. CSRF漏洞原理/防御
  11. python后台Flask 快速入门
  12. mysql 分页拦截器_MyBatis 拦截器 (实现分页功能)
  13. “他们”将变身为全国最大的房屋租赁供应商
  14. pip和pip3 换源
  15. yml转换html,properties转换yml格式
  16. chrome浏览器性能分析
  17. Python中对列表中的字典元素进行排序
  18. 2011考研数学核心题型-陈文灯
  19. 线上靶机prompt.ml
  20. java 克隆对象_Java中克隆(Clone)一个对象

热门文章

  1. 德媒:外景代替了现实 中国人拍婚纱照跑到很远地方
  2. VB一个可以改变箭头方向的气泡提示
  3. [转] 撞车之后,不要傻里傻气的!
  4. VB手控Combobox的打开或收起
  5. 浙大首届人工智能本科生9月入学,纳入竺院图灵班
  6. 谷歌大脑AI飞速解锁雅达利,训练不用两小时:预测能力“前所未有”
  7. 不用写代码,就能训练测试深度学习模型!Uber开源AI工具箱Ludwig
  8. 用深度神经网络修复H漫:看完这篇你就能眼中无码
  9. 南大首届AI本科课程曝光:周志华为第一批00后,准备了大剂量烧脑数学
  10. 一文看懂搜狗招股书:90次提到AI,王小川持股5%,净利3.7亿