Esempio n. 1
0
            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;
            }
Esempio n. 2
0
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;
}