欢迎来到入门教程网!

C语言

当前位置:主页 > 软件编程 > C语言 >

C++进程共享数据封装成类实例

来源:本站原创|时间:2020-01-10|栏目:C语言|点击:

本文实例讲述了C++进程共享数据封装成类的方法,分享给大家供大家参考。具体方法如下:

ShareMemory.cpp源文件如下:

复制代码 代码如下:
#include "ShareMemory.h" 
 
CShareMemory::CShareMemory(const    char* pszMapName, int nFileSize, BOOL bServer):m_hFileMap(NULL),m_pBuffer(NULL) 

    if (bServer) //是服务端,就创建 
    { 
        m_hFileMap = ::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, 0, nFileSize, pszMapName); 
    } 
    else //否则就打开 
    { 
        m_hFileMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, pszMapName); 
    } 
    //把它映射到内存 
    m_pBuffer = ::MapViewOfFile(m_hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); 

 
CShareMemory::~CShareMemory(void) 

    ::UnmapViewOfFile(m_pBuffer); 
    ::CloseHandle(m_hFileMap); 
}

ShareMemory.h头文件如下:

复制代码 代码如下:
#pragma once 
#include <Windows.h> 
 
class CShareMemory 

public: 
    CShareMemory(const  char* pszMapName, int nFileSize=0, BOOL bServer=FALSE); 
    ~CShareMemory(void); 
    //属性 
    LPVOID GetBuffer() const  
    { 
        return m_pBuffer; 
    } 
 
    //实现 
private: 
    HANDLE m_hFileMap; 
    LPVOID m_pBuffer; 
};

使用时用法如下:

服务端:

复制代码 代码如下:
#include "ShareMemory.h" 
int main(int argc, char *argv[]) 

 
    //进程间内存共享 
    LPCTSTR lpName= "hello"; 
    LPCTSTR lpContent = "123456"; 
    CShareMemory* pShareMemory = new CShareMemory(lpName, 20, FALSE); 
    LPVOID lpBase = pShareMemory->GetBuffer(); 
    strcpy((char*)lpBase, lpContent); 
     
    printf("%s\n",(char*)pShareMemory->GetBuffer()); 
    getchar(); 
    return 0; 
}

客户端:

复制代码 代码如下:
#include "ShareMemory.h" 
int main(int argc, char *argv[]) 

 
    //进程间内存共享 
    LPCTSTR lpName= "hello"; 
    LPCTSTR lpContent = "123456"; 
    CShareMemory* pShareMemory = new CShareMemory(lpName, 20, FALSE); 
 
    printf("%s\n",(char*)pShareMemory->GetBuffer()); 
    getchar(); 
    return 0; 
}

希望本文所述对大家的C++程序设计有所帮助。

上一篇:C++封装IATHOOK类实例

栏    目:C语言

下一篇:C++基于hook iat改变Messagebox实例

本文标题:C++进程共享数据封装成类实例

本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/3240.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有