Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayLib::cFileMemMap Class Reference

#include <cFileMemMap.h>

Public Member Functions

 cFileMemMap () noexcept
 
 ~cFileMemMap ()
 
HRESULT OpenView (DWORD dwDesiredAccess, STREAM_OFFSET_t nViewOffset, size_t nViewSize)
 
void CloseView ()
 
size_t get_ViewSize () const
 
HRESULT OpenMemMap (const FILECHAR_t *pszName, DWORD dwDesiredAccess, size_t nViewSize, HANDLE hFile=INVALID_HANDLE_VALUE)
 
void CloseMemMap ()
 
HRESULT OpenMemMapV (const FILECHAR_t *pszName, DWORD dwDesiredAccess=FILE_MAP_ALL_ACCESS, size_t nViewSize=0, HANDLE hFile=INVALID_HANDLE_VALUE)
 
 UNITTEST_FRIEND (cFileMemMap)
 

Public Attributes

cOSHandle m_MapFile
 similar to cFile ? More...
 
cMemBlock m_View
 pointer to the memory block/window in m_MapFile. More...
 

Detailed Description

Memory mapped OS file that may be shared between processes.

Note
a similar effect can be achieved using a shared data segment in a DLL. (or cOSPipe or other) Multi process can see the shared memory segment in the DLL. "#pragma data_seg (".SHARED") and link /SECTION:.SHARED,RWS" like shmget() and shmat() for linux

Constructor & Destructor Documentation

◆ cFileMemMap()

GrayLib::cFileMemMap::cFileMemMap ( )
inlinenoexcept

◆ ~cFileMemMap()

GrayLib::cFileMemMap::~cFileMemMap ( )
inline

Member Function Documentation

◆ CloseMemMap()

void GrayLib::cFileMemMap::CloseMemMap ( )
inline

◆ CloseView()

void GrayLib::cFileMemMap::CloseView ( )

Close the memory view, but keep the file.

◆ get_ViewSize()

size_t GrayLib::cFileMemMap::get_ViewSize ( ) const
Note
_WIN32 "::GetFileSize( m_MapFile.m_h, nullptr )" doesn't work!!

◆ OpenMemMap()

HRESULT GrayLib::cFileMemMap::OpenMemMap ( const FILECHAR_t pszName,
DWORD  dwDesiredAccess,
size_t  nViewSize,
HANDLE  hFile = INVALID_HANDLE_VALUE 
)

If hFile is INVALID_HANDLE_VALUE then just a memory page is used. else Take some existing hFile and create a memory mapping for it.

  • pszName = The name of the file mapping object (Not the name of the file) for multi-process sharing.
  • dwDesiredAccess = FILE_MAP_WRITE, FILE_MAP_READ,

◆ OpenMemMapV()

HRESULT GrayLib::cFileMemMap::OpenMemMapV ( const FILECHAR_t pszName,
DWORD  dwDesiredAccess = FILE_MAP_ALL_ACCESS,
size_t  nViewSize = 0,
HANDLE  hFile = INVALID_HANDLE_VALUE 
)
inline

Open a memory map and a view to it as a single call.

  • dwDesiredAccess = FILE_MAP_READ, FILE_MAP_WRITE

◆ OpenView()

HRESULT GrayLib::cFileMemMap::OpenView ( DWORD  dwDesiredAccess,
STREAM_OFFSET_t  nViewOffset,
size_t  nViewSize 
)

change the map view into the file opened as m_MapFile

  • dwDesiredAccess = FILE_MAP_READ, FILE_MAP_WRITE ASSUMED m_MapFile != nullptr

◆ UNITTEST_FRIEND()

GrayLib::cFileMemMap::UNITTEST_FRIEND ( cFileMemMap  )

Member Data Documentation

◆ m_MapFile

cOSHandle GrayLib::cFileMemMap::m_MapFile

similar to cFile ?

◆ m_View

cMemBlock GrayLib::cFileMemMap::m_View

pointer to the memory block/window in m_MapFile.


The documentation for this class was generated from the following files: