// ------------------------------------------------------
// Shared memory func. by Ni Idea, modificated by Karman
// ------------------------------------------------------
#include <SharedMemLib.h>
//--------------------------------------------------------
//
//--------------------------------------------------------
BOOL CreateSharedMemoryArea(PSharedMemory psm,LPSTR SMName,DWORD size){
psm->hFile = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,sizeof(DWORD)*size,SMName);
if(!psm->hFile)return FALSE;
psm->hView = MapViewOfFile(psm->hFile,FILE_MAP_ALL_ACCESS,0,0,0);
if(!psm->hView){
CloseHandle(psm->hFile);
return FALSE;
}
return TRUE;
}
//--------------------------------------------------------
//
//--------------------------------------------------------
BOOL OpenSharedMemory(PSharedMemory psm,LPSTR SMName){
psm->hFile = OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SMName);
if(!psm->hFile)return FALSE;
psm->hView= MapViewOfFile(psm->hFile,FILE_MAP_ALL_ACCESS,0,0,0);
if(!psm->hView){
CloseHandle(psm->hFile);
return FALSE;
}
return TRUE;
}
//--------------------------------------------------------
//
//--------------------------------------------------------
BOOL DestroySharedMemoryArea(PSharedMemory psm){
if(UnmapViewOfFile(psm->hView)&&CloseHandle(psm->hFile))return TRUE;
return FALSE;
}
//--------------------------------------------------------
//
//--------------------------------------------------------
VOID WriteOnSharedMemory(PSharedMemory psm,DWORD data, DWORD position){
psm->hView[position] = data;
}
//--------------------------------------------------------
//
//--------------------------------------------------------
VOID ReadFromSharedMemory(PSharedMemory psm,LPDWORD data, DWORD position){
*data = psm->hView[position];
}