メモりマップドファイル
ファイル・イメージをメモりにマッピングすることにより、高速かつ簡単に
ファイルを操作することが出来ます。この方法の事をメモりマップドファイルといいます。
class CFileMemoMap
{
public:
CFileMemoMap();
virtual ~CFileMemoMap();
//メソッド関数
void SetReadMemoryMap(); //ファイルをメモりにマッピングする
void CloseMemoryMap(); //メモリマップドファイルを閉じる
//メソッド変数
char* m_pMapView ; //メモリマップドファイル操作用ポインタ
LPCTSTR m_strFName; //マッピングするファイル(フルパス)
private:
//変数
char* pTopMapView ; //メモリマップドファイルの先頭アドレス
HANDLE hFile ; //指定ファイルのハンドル
HANDLE hMap ; //メモリマップドファイルのハンドル
};
void CFileMemoMap::SetReadMemoryMap()
{
// open file
hFile = CreateFile( m_strFName, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0 ) ;
if( hFile == INVALID_HANDLE_VALUE )
return ;
// create mapping
hMap = CreateFileMapping( hFile, 0, PAGE_READONLY, 0, 0, "spacesoft" ) ;
if( hMap <= 0 )
return ;
// map to memory(ポインタm_pMapViewを操作することにより高速かつ簡単にファイル操作が出来る)
m_pMapView = (char *)MapViewOfFile( hMap, FILE_MAP_READ, 0, 0, 0 ) ;
pTopMapView = m_pMapView ;
}
//メモリマップドファイルを解放する
void CFileMemoMap::CloseMemoryMap()
{
CloseHandle( hMap ) ;
CloseHandle( hFile ) ;
}