windows程式設計學習——共享記憶體(二)
阿新 • • 發佈:2019-02-13
#include <stdio.h> #include <Windows.h> #define SHAREMEMNAME "ZSShareMem" int main() { char *szShareMem = NULL; HANDLE hShareMem = INVALID_HANDLE_VALUE; hShareMem = OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREMEMNAME); //開啟一個已經存在的共享記憶體(ZSShareMem),獲得所有許可權進行訪問 if (hShareMem == NULL || hShareMem == INVALID_HANDLE_VALUE) { printf("檔案開啟失敗"); } szShareMem = (char *)MapViewOfFile(hShareMem,FILE_MAP_WRITE|FILE_MAP_READ,0,0,0); //將共享記憶體對映到當前程序地址空間 printf("%s\n",szShareMem); //列印共享記憶體中的資訊 getchar(); return 0; }
OpenFileMapping函式:
功能:開啟一個現成的檔案對映物件
原型:
OpenFileMapping(
__in DWORDdwDesiredAccess,//訪問方式
__in BOOLbInheritHandle,//如這個函式返回的控制代碼能由當前程序啟動的新程序繼承,則這個引數為TRUE
__in LPCSTRlpName//指定要開啟的檔案對映物件名稱
);
訪問方式的取值:
FILE_MAP_WRITE對映可讀可寫。檔案對映物件必須通過PAGE_READWRITE訪問建立。
FILE_MAP_READ對映只讀。檔案對映物件必須通過PAGE_READ 或 PAGE_READWRITE訪問建立。
FILE_MAP_ALL_ACCESS與FILE_MAP_WRITE相同。
FILE_MAP_COPY對映時保留寫操作的副本。檔案對映物件必須用PAGE_WRITECOPY訪問在win95下建立