Не могу сохранить файл в AkelPad 3.1.8

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 2
Joined: Fri Dec 22, 2006 2:10 pm

Не могу сохранить файл в AkelPad 3.1.8

Post by ncode »

Немогу сохранить файл в AkelPad 3.1.8 если он открвался через апишный CreateFileMapping() другим приложением.
Кусок кода для работы с каким-нибудь файлом в моем приложении:

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;
}
После этого этот файл невозможно сохранить в AkelPad, пока не закроется мое приложение. Проверял метод Close() - выполняется успешно, закрывает все дескрипторы. Попробовал NotePad - все нормально в данном случае работает.

P.S. А может я где-то ошибаюсь?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Возможно:
- FILE_SHARE_READ|FILE_SHARE_WRITE
- UnmapViewOfFile

Offline
Posts: 2
Joined: Fri Dec 22, 2006 2:10 pm

Post by ncode »

Instructor wrote:Возможно:
- FILE_SHARE_READ|FILE_SHARE_WRITE
- UnmapViewOfFile
Да похоже, что оно. Интересно почему NotePad это игнорирует.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Кто его знает :)
Post Reply