/****************************************************************
// Function : 内存映射文件进行文件同步操作的例子,转载请注明出处
// Author : Lthis
// Create : 2015-2-1 11:07:50
// Checked : Lthis 2015-2-1
****************************************************************/
#include "stdafx.h"
#include "windows.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
/*
code by Lthis
*/
HANDLE hFile = ::CreateFile(L"C:\tmp\a.exe",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
HANDLE hFileMapping = ::CreateFileMapping(hFile,
NULL,
PAGE_READWRITE,
0, 0,
NULL);
PBYTE pbFile = NULL;
pbFile = (PBYTE)::MapViewOfFile(hFileMapping, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
cout << pbFile << endl;
pbFile[0] = '!';
pbFile[1] = '@';
FlushViewOfFile(pbFile, 2); //禁止写延迟,立即写入
cout << pbFile << endl;
::UnmapViewOfFile(pbFile);
::CloseHandle(hFileMapping);
::CloseHandle(hFile);
/*
code by Lthis
*/
getchar();
return 0;
}