简单的工作室

当前位置: 主页>编程技巧>VC++编程>

C++语言进行内存共享程序的编写

时间:2014-05-19 15:39来源:未知 作者:admin 点击:
创建共享内存分以下几个步骤: 1.定义共享内存的结构体; 2.利用CreateFileMapping函数创建共享内存; 3.定义指向共享内存结构体的指针pShareMem,利用MapViewOfFile函数将刚刚创建的内存映射到定义指针pShareMem。 读写共享内存分以下几个步骤: 1.定义共享内存的结构
创建共享内存分以下几个步骤:
    1.定义共享内存的结构体;
    2.利用CreateFileMapping函数创建共享内存;
    3.定义指向共享内存结构体的指针pShareMem,利用MapViewOfFile函数将刚刚创建的内存映射到定义指针pShareMem。
    读写共享内存分以下几个步骤:
    1.定义共享内存的结构体;
    2.用OpenFileMapping函数打开上面创建的共享内存区,该函数返回共享内存的地址;
    3.将共享内存映射为文件指针;
    4.定义指向共享内存结构体的指针,将共享内存的内容拷贝到结构体指针里。
HANDLE hMap;
HANDLE hAddress;
int iErrCode;
//第一步要定义所要共享的内容的结构体
typedef struct _TShareMem
{
    char Data[256];
}TShareMem; 
void CreateMap()
{   
    CString strBuf;
    CString strShare = "共享内存";
    char szBuf[256];
    TShareMem* pShareMem;
    //创建共享内存,这个函数的最后一个参数即是创建的共享内存的名称 
    hMap=::CreateFileMapping((HANDLE)-1,NULL,PAGE_READWRITE,0,sizeof(TShareMem),_T("NewMap"));
    if ( hMap == NULL )   
    {
        iErrCode = GetLastError();
        AfxMessageBox("不能创建内存映射文件!");
    }
    //写共享内存区,将内存映射为文件
    pShareMem = (TShareMem*)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);
    memcpy(pShareMem,strShare,strShare.GetLength());   
    
    //打开刚刚创建的共享内存区 
    hMap = ::OpenFileMapping( FILE_MAP_WRITE, false, _T("NewMap"));
    if (hMap == 0 )
    {
        iErrCode = GetLastError();
        AfxMessageBox("不能定位内存映射文件块!");
    }
    //读共享内存区 
    hAddress = MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);
    //pShareMem = (TShareMem*)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0); 
    
    if ( hAddress == NULL )
        AfxMessageBox("Can''t View Memory Map");
    
    memset(szBuf,0,sizeof(szBuf));
    //拷贝共享内存区的内容 
    CopyMemory(szBuf,hAddress,255);
    AfxMessageBox(szBuf);

}C++语言进行内存共享程序的编写 - gideshi - gideshi的博客

(责任编辑:简单的工作室)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容