Source code for sharedmem.cpp


    1: #include "sharedmem.h"
    2: 
    3: 
    4: SharedMem::SharedMem()
    5: {
    6:     m_hMap  = NULL;
    7:     m_pdata = NULL;
    8:     m_sName[ 0 ] = 0;
    9:     m_dwLastError = 0;
   10: }
   11: 
   12: SharedMem::~SharedMem()
   13: {
   14:     // close our mapping to the file when the object goes away
   15:     Delete();
   16: }
   17: 
   18: bool SharedMem::Create( DWORD dwBytes, char* psName /*= NULL*/ )
   19: {
   20:     // try to create a region of memory and get read/write access
   21:     m_hMap = CreateFileMapping( (HANDLE) 0xFFFFFFFF, NULL, 
   22:                                 PAGE_READWRITE, 0, dwBytes, psName );
   23: 
   24:     // did we succeed?
   25:     if ( NULL == m_hMap )  {
   26:         m_dwLastError = GetLastError();
   27:         return false;
   28:     }
   29: 
   30:     // map the memory into our address space and get a pointer to it
   31:     m_pdata = MapViewOfFile( m_hMap, FILE_MAP_WRITE, 0, 0, 0 );
   32: 
   33:     // did we succeed?
   34:     if ( NULL == m_pdata )  {
   35:         m_dwLastError = GetLastError();
   36:         CloseHandle( m_hMap );
   37:     }
   38: 
   39:     m_dwLastError = 0;
   40:     return true;
   41: }
   42: 
   43: void SharedMem::Delete()
   44: {
   45:     // unmap the address
   46:     if ( NULL != m_pdata )  {
   47:         UnmapViewOfFile( m_pdata );
   48:         m_pdata = NULL;
   49:     }
   50: 
   51:     // close our connection to the region
   52:     if ( NULL != m_hMap )  {
   53:         CloseHandle( m_hMap );
   54:         m_hMap = NULL;
   55:     }
   56: }
   57: