小白一枚,如有不對,請各位大神多多指教!
最近看了看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 }