我需要創建文件的mmap。由於Windows不支持mmap,我嘗試過MapViewOfFile()方法。但是這失敗了。windows c:無法創建文件的mmap
這裏是我的代碼:
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;
}
輸出:
CreateFile() error 0x00000003
提示:模板是現有文件。
我的代碼有什麼問題嗎?請幫助我?
是否'ijas.txt'存在?您應該調用[GetLastError](https://msdn.microsoft.com/en-us/library/windows/desktop/ms679360(v = vs.85).aspx)來查看函數調用出了什麼問題。 – LPs
當Windows系統調用失敗時,應該使用['GetLastError'](https://msdn.microsoft.com/en-us/library/windows/desktop/ms679360(v = vs.85).aspx)來查找什麼[錯誤](https://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v = vs.85).aspx)是。 –
@JoachimPileborg我已經編輯我的代碼和輸出與GetLastError函數 –