C++ processes share data encapsulated as class instances
- 2020-04-02 02:51:42
- OfStack
This article illustrates the C++ process Shared data encapsulation into a class method, sharing for your reference. Specific methods are as follows:
The source file for ShareMemory. CPP is as follows:
#include "ShareMemory.h"
CShareMemory::CShareMemory(const char* pszMapName, int nFileSize, BOOL bServer):m_hFileMap(NULL),m_pBuffer(NULL)
{
if (bServer) //Is the server, created & NBSP; < br / >
{
m_hFileMap = ::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, 0, nFileSize, pszMapName);
}
else //Otherwise open & NBSP; < br / >
{
m_hFileMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, pszMapName);
}
//Map it to memory & NBSP; < br / >
m_pBuffer = ::MapViewOfFile(m_hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
}
CShareMemory::~CShareMemory(void)
{
::UnmapViewOfFile(m_pBuffer);
::CloseHandle(m_hFileMap);
}
The ShareMemory. H header file is as follows:
#pragma once
#include <Windows.h>
class CShareMemory
{
public:
CShareMemory(const char* pszMapName, int nFileSize=0, BOOL bServer=FALSE);
~CShareMemory(void);
//Property & have spent < br / >
LPVOID GetBuffer() const
{
return m_pBuffer;
}
//Implement & have spent < br / >
private:
HANDLE m_hFileMap;
LPVOID m_pBuffer;
};
The usage is as follows:
Server:
#include "ShareMemory.h"
int main(int argc, char *argv[])
{
//Memory sharing between processes & NBSP; < br / >
LPCTSTR lpName= "hello";
LPCTSTR lpContent = "123456";
CShareMemory* pShareMemory = new CShareMemory(lpName, 20, FALSE);
LPVOID lpBase = pShareMemory->GetBuffer();
strcpy((char*)lpBase, lpContent);
printf("%sn",(char*)pShareMemory->GetBuffer());
getchar();
return 0;
}
Client:
#include "ShareMemory.h"
int main(int argc, char *argv[])
{
//Memory sharing between processes & NBSP; < br / >
LPCTSTR lpName= "hello";
LPCTSTR lpContent = "123456";
CShareMemory* pShareMemory = new CShareMemory(lpName, 20, FALSE);
printf("%sn",(char*)pShareMemory->GetBuffer());
getchar();
return 0;
}
Hope that the article described in the C++ programming to help you.