📄 memmapfile.cpp
字号:
#include "stdafx.h"
#include "..\Include\MemMapFile.h"
//===================================================================
void * FCMemMapFile::ReadFile (PCTSTR szFileName, DWORD dwShare)
{
this->UnMap () ;
m_hFile = ::CreateFile (szFileName, GENERIC_READ, dwShare, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) ;
if (m_hFile == INVALID_HANDLE_VALUE)
return NULL ;
m_hFileMap = ::CreateFileMapping (m_hFile, NULL, PAGE_READONLY, 0, 0, NULL) ;
if (m_hFileMap == NULL)
{
::CloseHandle (m_hFile) ;
m_hFile = INVALID_HANDLE_VALUE ;
return NULL ;
}
m_pMapAddress = ::MapViewOfFile (m_hFileMap, FILE_MAP_READ, 0, 0, 0) ;
if (m_pMapAddress == NULL)
this->UnMap () ;
return (void *)m_pMapAddress ;
}
//===================================================================
void * FCMemMapFile::CreateFile (PCTSTR szFileName, DWORD dwMaxFileSize, bool bOverWrite, DWORD dwShare)
{
this->UnMap () ;
m_hFile = ::CreateFile (szFileName, GENERIC_READ | GENERIC_WRITE, dwShare, NULL,
bOverWrite ? CREATE_ALWAYS : CREATE_NEW,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL) ;
if (m_hFile == INVALID_HANDLE_VALUE)
return NULL ;
m_hFileMap = ::CreateFileMapping (m_hFile, NULL, PAGE_READWRITE, 0, dwMaxFileSize, NULL) ;
if (m_hFileMap == NULL)
{
::CloseHandle (m_hFile) ;
m_hFile = INVALID_HANDLE_VALUE ;
return NULL ;
}
m_pMapAddress = ::MapViewOfFile (m_hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0) ;
if (m_pMapAddress == NULL)
this->UnMap () ;
return (void *)m_pMapAddress ;
}
//===================================================================
void * FCMemMapFile::ModifyFile (PCTSTR szFileName, DWORD dwMaxFileSize, DWORD dwShare)
{
this->UnMap () ;
m_hFile = ::CreateFile (szFileName, GENERIC_READ | GENERIC_WRITE, dwShare, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) ;
if (m_hFile == INVALID_HANDLE_VALUE)
return NULL ;
m_hFileMap = ::CreateFileMapping (m_hFile, NULL, PAGE_READWRITE, 0, dwMaxFileSize, NULL) ;
if (m_hFileMap == NULL)
{
::CloseHandle (m_hFile) ;
m_hFile = INVALID_HANDLE_VALUE ;
return NULL ;
}
m_pMapAddress = ::MapViewOfFile (m_hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0) ;
if (m_pMapAddress == NULL)
this->UnMap () ;
return (void *)m_pMapAddress ;
}
//===================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -