Кусок кода для работы с каким-нибудь файлом в моем приложении:
Code: Select all
//открываю файл
RESULT TFileReader::Open(LPCTSTR file_name)
{
FileHandle = ::CreateFile(file_name, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if(false == ::IsHandleValid(FileHandle))
{
FileHandle = NULL;
return R_UNABLE_OPEN_FILE;
}
const DWORD file_size = ::GetFileSize(FileHandle, NULL);
if(INVALID_FILE_SIZE != file_size)
{
FileMappingHandle = ::CreateFileMapping(FileHandle, NULL, PAGE_READONLY, 0, 0, NULL);
if(true == ::IsHandleValid(FileMappingHandle)) //false when file_size = 0
{
Begin = reinterpret_cast<TCHAR*>(::MapViewOfFile(FileMappingHandle, FILE_MAP_READ, 0, 0, 0));
if(NULL != Begin)
{
End = Begin + file_size;
Pos = static_cast<LPCTSTR>(Begin);
return R_SUCCESS;
}
}
}
Close();
return R_UNABLE_OPEN_FILE;
}
//
//здесь работаю с файлом
//
//закрываю файл
void TFileReader::Close()
{
::CloseHandle(FileMappingHandle);
::CloseHandle(FileHandle);
FileMappingHandle = NULL;
FileHandle = NULL;
Begin = NULL;
End = NULL;
}
P.S. А может я где-то ошибаюсь?