实践是知识的母亲,知识是生活的明灯。这篇文章主要讲述IPC进程间通讯之三内存映射文件Mapping File相关的知识,希望能为你提供帮助。
IPC进程间通信+
共享内存Mapping
IPC(Inter-Process Communication。进程间通信)。
文件映射(Mapping)是一种将文件内容映射到内存地址的技术,通过对映射内存,读写文件如同读写内存一般简单。
多个进程映射同一个文件映射对象,也即多个进程映射到同一个物理存储页面,因此。当一个进程向映射内存写入数据时,其它进程能够通过映射内存读取数据。通过这个机制实现进程间通信。
1.内存文件映射Mapping File
:
A进程创建一个命名的Mapping对象,并在映射内存中写入须要共享的数据。B进程通过对象名打开Mapping对象,映射该Mapping对象。从映射内存中读取数据。
2.基本API函数 :
创建Mapping对象:
HANDLE
CreateFileMapping(
HANDLE
hFile,
//物理文件句柄
LPSECURITY_ATTRIBUTES
lpAttributes, //安全设置
DWORD
flProtect,
//保护设置
DWORD
dwMaximumSizeHigh,
//高位文件大小
DWORD
dwMaximumSizeLow,
//低位文件大小
LPCTSTR
lpName
//共享内存名称
);
该函数返回创建的Mapping对象。
创建映射内存:
LPVOID
MapViewOfFile(
HANDLE
hFileMappingObject,
//Mapping对象
DWORD
dwDesiredAccess,
//存取类别
DWORD
dwFileOffsetHigh,
//映射文件高位
DWORD
dwFileOffsetLow,
//映射文件地位
SIZE_T
dwNumberOfBytesToMap
//映射字节数
);
该函数用于创建Mapping对象的映射内存,返回映射内存。
内存复制:
VOID
CopyMemory(
PVOID Destination,
//要复制内存块的目的地址
CONST VOID *Source,
//要复制内存块的源地址
SIZE_T Length
//复制的字节数
);
该函数用于将数据拷贝到映射内存。
【IPC进程间通讯之三内存映射文件Mapping File】打开Mapping对象:
HANDLE
OpenFileMapping(
DWORD
dwDesiredAccess ,
// 存取权限
BOOL
bInheritHandle ,
//继承设置,一般设为FALSE
LPCTSTR
lpName
// Mapping对象名
);
该函数用于打开一个存在的Mapping对象。返回Mapping对象句柄。
3.牛刀小试:
先在VC6.0中执行process1程序。在执行process2程序:
执行效果:
文章图片
process1程序:process2 程序:
推荐阅读
- 怎样预置Android 手机 APK
- Androidapplication framework 分析[in process]
- Android中ViewPager的使用
- Android如何使用API
- Firebase应用内消息传递设置和配置
- 5款最佳HDR软件合集(你应该选择哪个())
- Windows 10的5个最佳密码重置工具合集
- Mac计算机的5款最佳虚拟机软件(哪个最好用())
- Windows 10的5个最佳电子邮件客户端合集