This article describes the C + + process shared data encapsulation into a class of methods, shared for everyone to reference. The specific methods are as follows:
ShareMemory.cpp source files are as follows:
Copy Code code as follows:
#include "ShareMemory.h"
Csharememory::csharememory (const char* pszmapname, int nfilesize, BOOL bserver): M_hfilemap (null), M_pbuffer (NULL)
{
if (bserver)//Is the service side, create
{
M_hfilemap =:: CreateFileMapping (Invalid_handle_value, NULL, Page_execute_readwrite, 0, Nfilesize, pszMapName);
}
else//otherwise open
{
M_hfilemap =:: OpenFileMapping (File_map_all_access, FALSE, pszmapname);
}
Mapping it to memory
M_pbuffer =:: MapViewOfFile (M_hfilemap, file_map_all_access, 0, 0, 0);
}
Csharememory::~csharememory (void)
{
:: UnmapViewOfFile (M_pbuffer);
:: CloseHandle (M_hfilemap);
}
ShareMemory.h header files are as follows:
Copy Code code as follows:
#pragma once
#include <Windows.h>
Class Csharememory
{
Public
Csharememory (const char* pszmapname, int nfilesize=0, BOOL bserver=false);
~csharememory (void);
Property
LPVOID GetBuffer () const
{
return m_pbuffer;
}
Realize
Private
HANDLE M_hfilemap;
LPVOID M_pbuffer;
};
Usage is as follows:
Service side:
Copy Code code as follows:
#include "ShareMemory.h"
int main (int argc, char *argv[])
{
Inter-process memory sharing
LPCTSTR lpname= "Hello";
LPCTSTR lpcontent = "123456";
csharememory* psharememory = new Csharememory (lpname, FALSE);
LPVOID lpbase = Psharememory->getbuffer ();
strcpy ((char*) lpbase, lpcontent);
printf ("%s\n", (char*) Psharememory->getbuffer ());
GetChar ();
return 0;
}
Client:
Copy Code code as follows:
#include "ShareMemory.h"
int main (int argc, char *argv[])
{
Inter-process memory sharing
LPCTSTR lpname= "Hello";
LPCTSTR lpcontent = "123456";
csharememory* psharememory = new Csharememory (lpname, FALSE);
printf ("%s\n", (char*) Psharememory->getbuffer ());
GetChar ();
return 0;
}
I hope this article will help you with the C + + program design.