Im essayant de mapper le fichier en mémoire et utiliser MapViewOfFile(), mais il échoue avec le code d'erreur 6. J'ai essayé à peu près n'importe quoi, je lis aussi sur les gros fichiers étant le problème , mais le problème arrive aussi avec un fichier de 1kb.échecs MapViewOfFile avec errorCode 6 (Handle Invalid)
mon code:
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;
}
la sortie est la suivante:
> successfully created a Handle to try.txt
> createFileMapping successfull
> Error: unable to MapViewOfFile
> MapViewOfFile errorcode: 6
> closed hFile handle and unmapped lpBase.
La sortie ne correspond pas au code. En fait, le code ne compile même pas. Qu'est-ce que 'FILE_MAP_ACCESS'? – IInspectable
Votre vérification d'erreur et la manipulation est très bâclée. CreateFileMapping() renvoie NULL en cas d'échec. Utiliser GetLastError() après avoir utilisé printf() est fondamentalement faux. L'utilisation de PAGE_EXECUTE_READWRITE sur un fichier texte n'a aucun sens. –