Im пытается сопоставить файл с памятью и использовать MapViewOfFile(), но он не работает с кодом ошибки 6. Я пробовал практически все, я также читал о проблемах с большими файлами , но проблема возникает и с файлом 1kb.Ошибка MapViewOfFile с errorCode 6 (Invalid Handle)
мой код:
HANDLE hFile = CreateFile(pFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
e = GetLastError();
printf("CreateFile Errorcode %d\n", GetLastError());
if (hFile == INVALID_HANDLE_VALUE)
{
printf("Error: could not create handle to file");
printf("CreateFileMapping error code: %d", e)
return 1;
}
printf("successfully created a Handle to try.txt");
HANDLE pMap = CreateFileMapping(hFile, NULL, PAGE_EXECUTE_READWRITE,0 ,0 ,NULL);
e = GetLastError();
if (pMap == INVALID_HANDLE_VALUE)
{
printf("Error: Unable to CreateFileMapping\n");
printf("CreateFileMapping error code: %d", e)
return 1;
}
printf("CreateFileMapping successfull.")
LPVOID lpBase MapViewOfFile(pMap, FILE_MAP_ACCESS| FILE_MAP_EXECUTE, 0, 0, 0);
e = GetLastError();
if (!lpBase)
{
printf("Error: could not map file to memory");
printf("MapViewOfFile Errorcode %d\n", GetLastError());
CloseHandle(hFile);
UnmapViewOfFile(lpBase);
printf("closed hFile handle and unmapped lpBase.")
return 1;
}
выход следующее:
> successfully created a Handle to try.txt
> createFileMapping successfull
> Error: unable to MapViewOfFile
> MapViewOfFile errorcode: 6
> closed hFile handle and unmapped lpBase.
Выход не соответствует коду. На самом деле код даже не компилируется. Что такое 'FILE_MAP_ACCESS'? – IInspectable
Ваша проверка и обработка ошибок очень неряшлива. CreateFileMapping() возвращает NULL, когда он терпит неудачу. Использование GetLastError() после использования printf() в корне неверно. Использование PAGE_EXECUTE_READWRITE в текстовом файле не имеет никакого смысла. –