12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include "MappedFile.h"
- USING_NS_BF;
- #ifdef BF_PLATFORM_WINDOWS
- MappedFile::MappedFile()
- {
- mMappedFile = INVALID_HANDLE_VALUE;
- mMappedFileMapping = INVALID_HANDLE_VALUE;
- mData = NULL;
- mFileSize = 0;
- }
- MappedFile::~MappedFile()
- {
- if (mData != NULL)
- ::UnmapViewOfFile(mData);
- if (mMappedFileMapping != INVALID_HANDLE_VALUE)
- ::CloseHandle(mMappedFileMapping);
- if (mMappedFile != INVALID_HANDLE_VALUE)
- ::CloseHandle(mMappedFile);
- }
- bool MappedFile::Open(const StringImpl& fileName)
- {
- mFileName = fileName;
- mMappedFile = CreateFileA(fileName.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
- if (mMappedFile == INVALID_HANDLE_VALUE)
- {
- return false;
- }
- DWORD highFileSize = 0;
- mFileSize = (int)GetFileSize(mMappedFile, &highFileSize);
- mMappedFileMapping = CreateFileMapping(mMappedFile, NULL, PAGE_READONLY, 0, mFileSize, NULL);
- mData = MapViewOfFile(mMappedFileMapping, FILE_MAP_READ, 0, 0, mFileSize);
- if (mData == NULL)
- {
- return false;
- }
- return true;
- }
- #endif
|