#include<iostream>
#include<Windows.h>
#pragma warning(disable:4996)
using namespace std;
int main()
{
char szName[] = "xxx";
char szData[] = "123456";
LPVOID pBuffer;
HANDLE hMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, 0, szName);
if (hMap != NULL)
{
//打开成功
pBuffer = ::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
printf("The data : %s\n", (char*)pBuffer);
}
else
{
//打开失败
hMap = ::CreateFileMapping((HANDLE)-1, NULL, PAGE_READWRITE, 0, strlen(szData) + 1, szName);//(HANDLE)-1和INVALID_HANDLE_VALUE都是共享内存。
pBuffer = ::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
strcpy((char*)pBuffer, szData);
printf("The writen : %s\n", (char*)pBuffer);
}
::UnmapViewOfFile(pBuffer);
getchar();
//关闭句柄后,Open返回的就是空的HANDLE
::CloseHandle(hMap);
return 0;
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/a76e34bb497d4b2c630da6e36661e87a.png)