废话不说直接上代码
头文件ShareMemory.h
#pragma once
#include<afxmt.h>
class CShareMemory
{
private:
CShareMemory(const char*fileName,DWORD iSize);
public:
~CShareMemory(void);
//单例
static CShareMemory & GetIns(const char *szName = "shareMem",DWORD dwSize=1024*10);
void Read(void *pData,DWORD &iSize);
void Write(void *pData,DWORD iSize);
private:
HANDLE m_hMapFile;
char m_szFileName[256];
CMutex m_Mutex;
};
源文件ShareMemory.cpp:
#include "StdAfx.h"
#include "ShareMemory.h"
CShareMemory::~CShareMemory(void)
{
CloseHandle(m_hMapFile);
}
CShareMemory::CShareMemory(const char*fileName,DWORD dwSize):
m_Mutex(false,fileName)
{
memcpy(m_szFileName, fileName,strlen(fileName));
strcat(m_szFileName,"1");
//打开共享内存
m_hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, NU