win32进程间通讯--共享内存

时间:2021-11-03 18:16:50

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

最近看了看win32进程间通讯。简单写了写利用共享内存实现进程间通讯

使用共享内存实现进程间通讯:

1.在WM_CREATE消息下创建文件映射内核对象

  

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

2.在需要进行数据共享的地方映射缓存区视图,将要写入的数据放入pbuf

 pBuf = (char *)MapViewOfFile(
hMapFile,
FILE_MAP_ALL_ACCESS,
,
,
BUF_SIZE-);
GetWindowText(hEdit2, (LPWSTR)szSend, BUF_SIZE);
strncpy(pBuf, szSend, BUF_SIZE-);
pBuf[BUF_SIZE - ] = '\0';

3.当用户进程结束使用共享内存后,调用UnmapViewOfFile函数以取消其地址空间内的视图(可以再WM_DESTROY中进行设置)

 if(hMapFile){
  UnmapViewOfFile(pBuf);
  CloseHandle(hMapFile);
}