[C++] 纯文本查看 复制代码
#include "stdafx.h"
#include <conio.h>
#define BUFSIZE 256
LPTSTR szName = TEXT("SharedFileMappingObject");
LPTSTR szMsg = _T("来自进程1的消息!");
int _tmain(int argc, _TCHAR* argv[])
{
setlocale (LC_ALL, "chs");
HANDLE hMapFile; // 文件映射句柄
LPTSTR pBuf; // 共享数据缓冲区指针
hMapFile = CreateFileMapping (INVALID_HANDLE_VALUE, // 与物理文件无关
NULL, // 安全设置默认
PAGE_READWRITE, // 保护设置
0, // 高 32 位
BUFSIZE, // 低 32 位
szName); // 共享内存名
if (hMapFile == NULL || hMapFile == INVALID_HANDLE_VALUE) {
printf ("CreateFileMapping error: %d\n", GetLastError());
return (-1);
}
//创建视图
pBuf = (LPTSTR) MapViewOfFile (hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, BUFSIZE);
if (pBuf == NULL) {
printf ("MapViewOfFile error %d\n", GetLastError());
return (-2);
}
//将共享数据复制到文件映射中
CopyMemory(pBuf, szMsg, 2*_tcslen(szMsg));
_tprintf (TEXT("请运行程序2,完成后,按任意键退出该程序..."));
_getch();
//取消映射
UnmapViewOfFile(pBuf);
CloseHandle(hMapFile);
return 0;
}
[C++] 纯文本查看 复制代码
#include "stdafx.h"
#pragma comment (lib, "User32.lib") //将 User32.lib 库文件加到本工程
#define BUF_SIZE 256
TCHAR szName[] = TEXT("SharedFileMappingObject");
int _tmain(int argc, _TCHAR* argv[])
{
setlocale (LC_ALL, "chs");
HANDLE hMapFile;
LPTSTR pBuf;
// 打开文件 Mapping
hMapFile = OpenFileMapping (FILE_MAP_ALL_ACCESS, FALSE, szName);
if (hMapFile == NULL) {
printf ("OpenFileMapping error: %d\n", GetLastError());
return (-1);
}
pBuf = (LPTSTR)MapViewOfFile (hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE);
if (pBuf == NULL) {
printf ("MapViewOfFile error %d\n", GetLastError());
return (-2);
}
MessageBox (NULL, pBuf, TEXT("进程2"), MB_OK);
UnmapViewOfFile(pBuf);
CloseHandle(hMapFile);
return 0;
}