#include "windows.h"
#include "stdio.h"
#pragma warning(disable:4996)
void CSharedMemoryDlg::OnBnClickedOk()
{
HANDLE hFile = CreateFile(TEXT("E:\zj.dat"), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == NULL) {
printf("create file error!");
return;
}
HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 1024 * 1024, TEXT("ZJ"));
int rst = GetLastError();
if (hMap != NULL && rst == ERROR_ALREADY_EXISTS) {
printf("hMap error\n");
CloseHandle(hMap);
hMap = NULL;
return;
}
CHAR* pszText = NULL;
pszText = (CHAR*)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 1024 * 1024);
if (pszText == NULL) {
printf("view map error!");
return;
}
sprintf(pszText, "hello my first mapping file!\n");
while (1) {
printf(pszText);
Sleep(3000);
}
getchar();
UnmapViewOfFile((LPCVOID)pszText);
CloseHandle(hMap);
CloseHandle(hFile);
}
void CSharedMemoryDlg::OnBnClickedCancel()
{
HANDLE hMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, TRUE, TEXT("ZJ"));
if (hMap == NULL) {
printf("open file map error!");
return;
}
CHAR* pszText = NULL;
pszText = (CHAR*)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 1024 * 1024);
if (pszText == NULL) {
printf("map view error!\n");
return;
}
printf(pszText);
sprintf(pszText, "second data!\n");
getchar();
UnmapViewOfFile(pszText);
CloseHandle(hMap);
hMap = NULL;
return;
}
原文地址,非常棒