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: