www.pudn.com > mysecP.rar > MemShare.cpp


// MemShare.cpp: implementation of the CMemShare class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "MemShare.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CMemShare::CMemShare() 
{ 
 
} 
 
CMemShare::~CMemShare() 
{ 
 
} 
 
LPSTR CMemShare::MemShareWrite(CString strMemName,long lMemSize) 
{ 
    LPSTR lpMsg; 
    hMap = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, 
                           PAGE_READWRITE, 0, lMemSize, strMemName); 
    if (hMap == NULL) 
    { 
        lpMsg=NULL; 
		return lpMsg; 
    } 
    lpMsg = (LPSTR)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0); 
    if (lpMsg == NULL) 
    { 
       return lpMsg; 
	} 
    return lpMsg; 
} 
 
LPSTR CMemShare::MemShareRead(CString strMemName, long lMemSize) 
{   LPSTR lpMsg; 
    hMap = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, 
                            PAGE_READONLY, 0, lMemSize, strMemName);//PAGE_READONLY 
    if (hMap == NULL) 
    { 
        lpMsg=NULL; 
		return lpMsg; 
    } 
    lpMsg = (LPSTR)MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0); 
    if (lpMsg == NULL) 
    { 
       return lpMsg; 
	} 
    return lpMsg; 
 
} 
 
BOOL CMemShare::MemCloseShare(LPSTR lpMsg,HANDLE hCloseMap) 
{   
	BOOL bClose; 
    bClose=UnmapViewOfFile(lpMsg); 
    if (hCloseMap != NULL)  
	{  
		CloseHandle(hCloseMap);  
		hMap = INVALID_HANDLE_VALUE;  
	}  
	return bClose; 
}