Je dois créer mmap d'un fichier. Puisque windows ne supporte pas mmap, j'ai essayé la méthode MapViewOfFile(). Mais cela échoue.Windows c: impossible de créer mmap d'un fichier
Voici mon code:
char template[1024];
snprintf(template, sizeof(template)/sizeof(char), "%s", "C:\\Users\\Ijas\\Downloads\\ijas.txt");
HANDLE hfile = CreateFile(template, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL);
if (hfile == INVALID_HANDLE_VALUE)
{
fprintf(stderr, "CreateFile() error 0x%08x \n", GetLastError());
return NULL;
}
HANDLE map_handle = CreateFileMapping(hfile, NULL, PAGE_READWRITE | SEC_RESERVE, 0, 0, 0);
if (map_handle == NULL)
{
fprintf(stderr, "CreateFileMapping() error 0x%08x\n", GetLastError());
CloseHandle(hfile);
return NULL;
}
sp = (char*)MapViewOfFile(map_handle, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, 0);
if (sp->buffer == NULL)
{
fprintf(stderr, "MapViewOfFile() error 0x%08x\n", GetLastError());
CloseHandle(hMapFile);
CloseHandle(hfile);
return NULL;
}
Sortie:
CreateFile() error 0x00000003
Astuce: modèle est un fichier existant.
Quelque chose ne va pas dans mon code? Sil te plait aide moi?
Est-ce que 'ijas.txt' existe? Vous devriez appeler [GetLastError] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms679360 (v = vs.85) .aspx) pour voir ce qui s'est mal passé avec l'appel de fonction. – LPs
Lorsqu'un appel système Windows échoue, vous devez utiliser ['GetLastError'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms679360 (v = vs.85) .aspx) pour rechercher ce que [l'erreur] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms681381 (v = vs.85) .aspx) est. –
@JoachimPileborg J'ai modifié mon code et sortie avec GetLastError –