標籤:
HANDLE hMapFile=NULL;LPBYTE lpMapAddress=NULL;
1.建立命名檔案對應物件hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE,//建立記憶體對應檔(不使用磁碟檔案) NULL, PAGE_READWRITE, 0, 1024,//映射的記憶體地區大小 "FileMapping_A9279E4A75917E23C2A");if(hMapFile==NULL){ TRACE("CreateFileMapping == NULL\n");} 2.開啟已經存在的命名檔案對應物件hMapFile = OpenFileMapping( FILE_MAP_ALL_ACCESS, FALSE, "FileMapping_A9279E4A75917E23C2A");if(hMapFile==NULL){ TRACE("OpenFileMapping == NULL\n");} 3.擷取映射的記憶體空間首址lpMapAddress = (LPBYTE)MapViewOfFile( hMapFile,// Handle to mapping object. FILE_MAP_ALL_ACCESS,// Read/write permission. 0,// high-order DWORD of offset. 0,// low-order DWORD of offset. 1024);// number of bytes to map. if (lpMapAddress==NULL){ TRACE("MapViewOfFile == NULL\n");} 4.使用:此時可以使用memset,memcpy等函數對這片記憶體進行操作...; 5.使用完之後的釋放if (lpMapAddress!=NULL){ UnmapViewOfFile(lpMapAddress);}if (hMapFile!=NULL){ CloseHandle(hMapFile);}
用檔案對應(File Mapping)實現進程間記憶體共用