void* FileMap::Initialize(const std::string& p_name, const size_t& p_fileMapSize) { m_name = p_name; m_fileMapSize = p_fileMapSize; bool success; success = OpenFileMap(); if(!success) { // TODORT LOG // TODOLOG return nullptr; } success = MapFileMapIntoMemory(); if(!success) { // TODORT LOG // TODOLOG return nullptr; } return m_rawMemoryOfMappedFile; }
bool ShareMemory::Open(unsigned long dwAccess) { #ifdef WIN32 if (NULL == m_hFileMap) m_hFileMap = OpenFileMapping( dwAccess, TRUE, m_shareName.c_str() ); if (NULL == m_hFileMap) { return false; } m_lpFileMapBuffer = MapViewOfFile(m_hFileMap, dwAccess, 0, 0, 0); if ( NULL == m_lpFileMapBuffer ) { Close(); return false; } MEMORY_BASIC_INFORMATION buffer; int nRet = VirtualQuery( m_lpFileMapBuffer, &buffer, sizeof(buffer)); if (0 == nRet) { Close(); return false; } m_dwSize = buffer.RegionSize; #else if ( "" != m_mapFilePath ) return OpenFileMap(); if ( -1 == m_digName ) { if ( "" == m_shareName ) return false; m_digName = atoi( m_shareName.c_str() ); if ( 0 >= m_digName ) return false; } m_shmid = shmget( m_digName, 0, 0666 ); if ( -1 == m_shmid ) return false; m_lpFileMapBuffer = shmat( m_shmid, 0, 0 ); shmctl( m_shmid, IPC_STAT, &m_ds ); m_dwSize = m_ds.shm_segsz; #endif return true; }