88 lines
3.1 KiB
C++
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
|