Windows上CAtlFileMapping共享内存的使用以及内部机制

本文介绍了在Windows上使用CAtlFileMapping进行共享内存操作的方法,包括如何初始化、使用和理解其内部实现。通过创建内存映射文件,不同进程可以共享数据,实现了CEF框架中跨进程通信的需求。同时,文章还探讨了CAtlFileMapping的OpenMapping和Unmap等功能的细节,强调了理解内存映射机制的重要性。

前言:

使用CEF加载网页,做JS与C++交互时,需要向主窗口发送一些消息来通知界面做相应的处理。但是,由于CEF使用chrome内核是多进程架构的,渲染引擎与主程序都不在同一个进程里面。因此,理所当然的就想到了使用共享内存了。为了更容易地使用,我们选择的是ATL里面封装的共享内存操作类:CAtlFileMapping。

CAtlFileMapping使用:

定义结构体,包含你所需要共享的数据,这里我们只需要共享主窗口的句柄

//自定义进程共享数据结构体
struct PROCESS_SHARE_DATA
{
	HWND	hMainWnd;
};
使用</span>VS自带GUID生成工具创建一个GUID,来唯一标识这块共享内存</p><p>const TCHAR szShareGuid[] = _T("4F836C8D-F55E-4D88-A0BF-9ACDC0A33B31");定义共享内存全局变量
extern CAtlFileMapping<PROCESS_SHARE_DATA> g_ShareData;

初始化这块共享内存,并给数据赋值

g_ShareData.MapSharedMem(sizeof(PROCESS_SHARE_DATA), szShareGuid);
((PROCESS_SHARE_DATA*)g_ShareData)->hMainWnd=pMainWnd->GetHWND();
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值