进程间通讯(五)--共享内存(文件映射)

本文详细探讨了进程间通讯中的共享内存机制,重点介绍了如何通过文件映射来实现不同进程间的共享数据。内容包括共享内存的创建、映射、读写操作以及同步控制,帮助读者掌握这一高效的数据交换方式。
摘要由CSDN通过智能技术生成
在Windows中,在同一台机器上共享数据的最底层的机制就是内存映射文件。所以,所有进程间通讯机制,都会用到内存映射文件。
这种数据共享机制是通过让两个或多个进程映射同一个文件映射对象得视图实现的,这意味着在进程间共享相同的物理存储界面。因此,当一个进程在文件映射对象视图中写入数据的时候,其他进程会在它们的视图中立刻看到变化。注意在多个进程共享同一个文件映射对象来说,所有进程使用的文件映射对象的名称必须相同。
函数解释:
打开一个映射文件对象
HANDLE CreateFileMapping(

HANDLE hFile, // 一个文件的句柄

LPSECURITY_ATTRIBUTES lpAttributes, // 定义内存映射文件对象是否可以继承

DWORD flProtect, // 该内存映射文件的保护类型

DWORD dwMaximumSizeHigh, // 内存映射文件的长度

DWORD dwMaximumSizeLow,

LPCTSTR lpName // 内存映射文件的名字

);


如果创建共享内存,其他对象不能再创建相同名字映射对象,要用以下函数去打开以及创建好的对象
HANDLE OpenFileMapping(

DWORD dwDesiredAccess, // 指定保护类型

BOOL bInheritHandle, // 返回的句柄是否可被继承

LPCTSTR lpName // 创建对象时使用的名字

);


为文件内容分配线性地址空间
LPVOID MapViewOfFile(

HANDLE hFileMappingObject, // 前两个函数返回的内存映射文件对象的句柄

DWORD dwDes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值