对应三个getchar()
演示: test
#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[]) { //内核对象,创建物理页 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("%p",g_lpBuff); getchar(); //关闭映射 UnmapViewOfFile(g_lpBuff); //关闭句柄 CloseHandle(g_hMapFile); getchar(); return 0; }test1:
#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[]) { 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); printf("进程B:%x",*(PDWORD)g_lpBuff); //关闭映射 UnmapViewOfFile(g_lpBuff); //关闭句柄 CloseHandle(g_hMapFile); getchar(); return 0; }