При попытке записи в файл появляется сообщение об ошибке «Как я могу сделать это правильно?»
Проверка ошибок может помочь вам определить, какая именно ошибка и где это произошло. Перед использованием убедитесь, что значение, возвращенное последней функцией, является действительным.
Ниже приведен пример работы для меня. Вы можете попробовать:
Создать сопоставление файлов в одном процессе.
HANDLE hFile = CreateFileA(
"test.txt", // file name
GENERIC_READ | GENERIC_WRITE, // access type
0, // other processes can't share
NULL, // security
OPEN_EXISTING, // open only if file exists
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
printf("CreateFileA error: %d \n", GetLastError());
// create file mapping object
HANDLE hMapFile;
hMapFile = CreateFileMapping(
hFile, // file handle
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
0, // maximum object size (low-order DWORD)
// 0 means map the whole file
L"myFile"); // name of mapping object, in case we
// want to share it
// read the file, one page at a time
if (hMapFile == NULL)
printf("CreateFileMapping error: %d \n", GetLastError());
getchar();
Открыть сопоставление файлов в другом.
HANDLE hFile = OpenFileMapping(FILE_MAP_WRITE, TRUE, L"myFile");
if (hFile == NULL)
printf("OpenFileMapping error: %d \n", GetLastError());
LPVOID lpMapAddress = MapViewOfFile(hFile, // handle to
// mapping object
FILE_MAP_ALL_ACCESS, // read/write
NULL, // high-order 32
// bits of file
// offset
NULL, // low-order 32
// bits of file
// offset
NULL); // number of bytes
if (lpMapAddress == NULL)
printf("MapViewOfFile error: %d \n", GetLastError());
char newData[] = "Z";
snprintf((char*)lpMapAddress, sizeof(newData), newData);
UnmapViewOfFile(lpMapAddress);
CloseHandle(hFile);