#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile = CreateFile(TEXT("test.dat"), GENERIC_READ | GENERIC_WRITE, NULL, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwFileSize = GetFileSize(hFile, NULL);
DWORD dwWritten;
printf("文件大小: %d\n", dwFileSize);
if (dwFileSize == 0)
{
char str[100];
strcpy_s(str, "Creates or opens a named or unnamed file mapping object for a specified file.");
WriteFile(hFile, str, sizeof(str), &dwWritten, NULL);
dwFileSize = GetFileSize(hFile, NULL);
}
HANDLE hMapFile = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwFileSize, NULL);
LPSTR lpData = (LPSTR)MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, dwFileSize);
puts(lpData);
// 只修改內存中的字符串 (最後會被自動寫入文件)
lpData[8] = 'O';
lpData[9] = 'R';
//FlushViewOfFile(lpData + 8, 2); // 立即寫入文件
UnmapViewOfFile(lpData);
CloseHandle(hMapFile);
CloseHandle(hFile);
return 0;
}