文章目录
私有内存:独占物理页
共享内存:和别人共享物理页
CreateFileMapping(
INVALID_HANDLE_VALUE,//为INVALID_HANDLE_VALUE时,不与文件关联
NULL, //安全描述符
PAGE_READWRITE, //保护模式(读写的权限)
0, //32位通常为空
BUFSIZ, //物理页的大小
MapFileName //指定文件映射对象的名字
);
g_lpBuff = (LPTSTR)MapViewOfFile(
g_hMapFile, //句柄
FILE_MAP_ALL_ACCESS,//虚拟内存读写权限
0, //32位用不上
0, //从哪开始映射
BUFSIZ //物理页多大它就多大
);
#include "stdafx.h"
#include "windows.h"
#define MapFileName "ZZZ"
#define BUF_SIZE 0x1000
HANDLE g_hMapFile;
LPTSTR g_lpBuff;
int main(int argc, char* argv[])
{
getchar();
//内核对象,创建物理页
g_hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,BUFSIZ,MapFileName);
//将物理页与线性地址进行映射,g_lpBuff就是虚拟内存地址
g_lpBuff = (LPTSTR)MapViewOfFile(g_hMapFile,FILE_MAP_ALL_ACCESS,0,0,BUFSIZ);
DWORD eror = GetLastError();
*(PDWORD)g_lpBuff = 0x12345678;//往虚拟内存地址存值
printf