deargui-vpl/ref/virtools/Includes/VxMeMoryMappedFile.h

88 lines
3.1 KiB
C++

/*************************************************************************/
/* File : VxMemoryMappedFile.h */
/* Author : Nicolas Galinotti */
/* */
/* Virtools SDK */
/* Copyright (c) Virtools 2000, All Rights Reserved. */
/*************************************************************************/
#ifndef __VxMemoryMappedFile_H__
#define __VxMemoryMappedFile_H__
/***********************************************************************
Summary: Possible return value when opening a memory mapped file.
See Also: VxMemoryMappedFile::GetErrorType
***********************************************************************/
enum VxMMF_Error {
VxMMF_NoError, // No error
VxMMF_FileOpen, // Cannot open file
VxMMF_FileMapping, // Cannot create file mapping
VxMMF_MapView // Cannot get a pointer to start of map
};
/***********************************************************************
Summary: Utility class for memory mapped file reading.
Remarks:
The VxMemoryMappedFile can be used have a mapping of a file into a memory
buffer for reading purposes.
Example:
VxMemoryMappedFile mappedFile(FileName);
DWORD FileSize = mappedFile.GetFileSize();
BYTE* buffer = (BYTE*)mappedFile.GetBase();
// buffer now contain the file content and can be read
See also:
***********************************************************************/
class VxMemoryMappedFile
{
public:
VX_EXPORT VxMemoryMappedFile( char* pszFileName );
VX_EXPORT ~VxMemoryMappedFile(void);
/***********************************************************************
Summary: Returns a pointer to the mapped memory buffer.
Remarks: The returned pointer should not be deleted nor should it be
used for writing purpose.
***********************************************************************/
VX_EXPORT void* GetBase( void ){ return m_pMemoryMappedFileBase; }
/***********************************************************************
Summary: Returns the file size in bytes.
***********************************************************************/
VX_EXPORT DWORD GetFileSize( void ){ return m_cbFile; }
/***********************************************************************
Summary: Returns the file was successfully opened and mapped to a memory buffer.
***********************************************************************/
VX_EXPORT BOOL IsValid( void ) { return VxMMF_NoError == m_errCode; }
/***********************************************************************
Summary: Returns whether there was an error opening the file.
***********************************************************************/
VX_EXPORT VxMMF_Error GetErrorType(){ return m_errCode; }
private:
#if defined(_LINUX)
int m_hFile;
void* m_pMemoryMappedFileBase;
DWORD m_cbFile;
VxMMF_Error m_errCode;
#else
GENERIC_HANDLE m_hFile;
GENERIC_HANDLE m_hFileMapping; // Handle of memory mapped file
void* m_pMemoryMappedFileBase;
DWORD m_cbFile;
VxMMF_Error m_errCode;
#endif
};
#endif