다른 프로세스에서 매핑 된 파일로 열리는 동안 파일에 쓰려고하는데 실패합니다.FileMapped 쓰기 액세스
코드의 조각을보고하십시오 : 현재 파일에서
access = GENERIC_READ | GENERIC_WRITE;
share = FILE_SHARE_READ | FILE_SHARE_WRITE;
disposition = OPEN_EXISTING;
HANDLE fileHandle = CreateFileA(fileName.c_str(), access, share, 0, disposition, 0);
//...
unsigned long valProtect = 0;
//...
valProtect = PAGE_READWRITE;
//...
const HANDLE mappingHandle = CreateFileMapping(fileHandle, 0, valProtect, 0, 0, 0);
//...
this->m_access = FILE_MAP_ALL_ACCESS;
//...
this->m_startAddress = (uint8_t*)MapViewOfFile(mappingHandle, this->m_access, 0, 0, 0);
//...
CloseHandle(fileHandle);
는 (그것의 핸들)를 폐쇄하지만 주소 공간에 매핑됩니다. 나는 ++ 메모장에서이 파일을 열어 수정하고 저장하려고하지만, 내가 볼 메시지 :
".이 파일이 다른 프로그램에서 열려 있는지 확인하십시오"
다른 프로세스에서 다시 쓸 수 없으므로 쓰기 권한이 잠긴 것으로 보입니다. 그럼 다시 파일을 다시 작성할 수 없습니다
UnmapViewOfFile(this->m_startAddress);
: 나는 같은 파일을 매핑되지 않은 경우
.
내가 뭘 잘못 했니?