当前位置: 首页 > news >正文

进程通信-内存共享

这里我们要写两个程序 第一个程序用来创建一片内存  第二个程序用来读取那片内存

第一   创建内存

#include<iostream>
#include<Windows.h>
using namespace std;int main()
{//第一步创建一个文件映射HANDLE hFileMaping = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL,PAGE_READWRITE, 0, 256, "ZHAO");if (!hFileMaping){cout << GetLastError() << endl;}//第二步将文件映射转换到内存中//返回值为文件映射到的那片内存的起始地址  如果失败了就返回NULL//第一个参数为你想要映射的文件句柄  第二个是权限 第三个和第四个决定了起始位置 第五个参数是要映射的大小LPVOID lMapView = MapViewOfFile(hFileMaping,FILE_MAP_ALL_ACCESS,0, 0, 256);if (!lMapView){cout << GetLastError() << endl;}//第三步为前面映射出来的内存赋值memcpy(lMapView, "fuckyouhahaha", strlen("fuckyouhahaha") + 1);system("pause");CloseHandle(hFileMaping);UnmapViewOfFile(lMapView);
}

第一步使用API:CreatFileMappingA来创建一个文件映射

这个函数可以创建或者打开一个文件映射 当第一个参数为INVALID_HANDLE_VALUE时就是创建一个文件映射  第二个参数选择是否继承  第三个参数是创建的这个文件的权限 第四个为最大尺寸的高32位通常为0第五个是低32位 我们通过改低32位的数值即可控制文件的大小 最后一个参数为你这个文件映射的名称(另一个程序读取的时候会用到它)

第二步使用API:MapViewFile将文件映射转换到内存当中

MapViewFile这个函数的第一个参数为被转换的文件映射的句柄  第二个参数为内存的权限 第三个和第四个分别为映射文件起始位置的高32位和低32位  我们都写为0他俩组合结果就为0所以我们从文件的开头转换 最后一个为我们要转换的大小

第三步为我们创建出来的内存写入数据 这里我写了一个字符串

最后记得关闭文件映射并释放内存

下面来写第二个程序----读取第一个程序创建的内存

#include<iostream>
using namespace std;
#include<Windows.h>int main()
{//第一步通过映射来的内存名称来获取它的句柄HANDLE hFileMapping = OpenFileMappingA(FILE_MAP_ALL_ACCESS, 0, "ZHAO");if (!hFileMapping){cout << GetLastError()<<endl;}LPVOID lpFileBuffer = MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 256);if (!lpFileBuffer){cout << GetLastError() << endl;}
}

第一步使用OpenFileMappingA来获取叫做"ZHAO"这个文件映射的句柄  打开权限为FILE_MAP_ALL_ACCESS

第二步还是将文件映射转换到内存中  

执行查看lpFileBuffer对应的内存发现和刚刚我们写入的字符串一样

相关文章:

  • 【目标检测】【医学图像目标检测】BGF-YOLO:脑肿瘤检测的多尺度注意力特征融合
  • Flink 常用算子详解与最佳实践
  • Python数据可视化实战:让数据从「数字堆」变成「故事书」
  • NestJS——重构日志、数据库、配置
  • Javase 基础加强 —— 08 IO流
  • 【Python 命名元祖】collections.namedtuple 学习指南
  • Java中关于数组的使用(下)
  • springboot中过滤器配置使用
  • 《爱的艺术》
  • python打卡训练营打卡记录day36
  • 电梯调度算法详解与Python实现
  • 简单数学板子和例题
  • 【短距离通信】【WiFi】WiFi7关键技术之4096-QAM、MRU
  • LLMs之Qwen:《Qwen3 Technical Report》翻译与解读
  • 用python实现中国象棋
  • PDF 编辑批量拆分合并OCR 识别
  • TCP 协议的相关特性
  • 识别速度快且精准的OCR工具
  • java每日精进 5.25【Redis缓存】
  • 【ExcelVBA 】类模块学习从入门到放弃
  • 模板网站什么意思/抖音代运营收费详细价格
  • 网站搭建怎么收费/国外域名注册网站
  • 购物网站难做/百度开放平台
  • 湖南网站建设费用/怎么样关键词优化
  • wordpress可视化界面/seo公司软件
  • 如何做网站打广告/网站页面优化包括