程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> win32進程間通訊--共享內存,win32進程間通訊--

win32進程間通訊--共享內存,win32進程間通訊--

編輯:關於C語言

win32進程間通訊--共享內存,win32進程間通訊--


小白一枚,如有不對,請各位大神多多指教!

最近看了看win32進程間通訊。簡單寫了寫利用共享內存實現進程間通訊

使用共享內存實現進程間通訊:

1.在WM_CREATE消息下創建文件映射內核對象

  

1 hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, BUF_SIZE, (LPCWSTR)szName);

 

2.在需要進行數據共享的地方映射緩存區視圖,將要寫入的數據放入pbuf

1 pBuf = (char *)MapViewOfFile(
2                 hMapFile,
3                 FILE_MAP_ALL_ACCESS,
4                 0,
5                 0,
6                 BUF_SIZE-1);
7 GetWindowText(hEdit2, (LPWSTR)szSend, BUF_SIZE);                
8 strncpy(pBuf, szSend, BUF_SIZE-1);
9 pBuf[BUF_SIZE - 1] = '\0';

 

3.當用戶進程結束使用共享內存後,調用UnmapViewOfFile函數以取消其地址空間內的視圖(可以再WM_DESTROY中進行設置)

1 if(hMapFile){
2   UnmapViewOfFile(pBuf);
3   CloseHandle(hMapFile);
4 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved