基本思想:服务端和客户端
写共享内存
- #include <windows.h>
- #include <iostream>
- using namespace std;
-
-
-
- HANDLE g_EventRead; // 读信号灯
- HANDLE g_EventWrite; // 写信号灯
- // 定义共享数据
-
-
-
- class Writer {
- public:
- Writer(const int buf_size, const wchar_t *share_memory);
- ~Writer();
- public:
- int send_data(char *szBuffer);
- private:
- HANDLE hMapFile;
- LPVOID lpBase;
- };
-
- Writer::Writer(const int buf_size, const wchar_t *share_memory) {
- // 创建共享文件句柄
- hMapFile = CreateFileMapping(
- INVALID_HANDLE_VALUE, // 物理文件句柄 NVALID_HANDLE_VALUE 则创建一个进程间共享的对象
- NULL, // 默认安全级别
- PAGE_READWRITE, // 可读可写
- 0, // 高位文件大小
- buf_size, // 低位文件大小
- share_memory // 映射文件名,即共享内存的名称
- );
-
- if (0 == hMapFile)
- {
- return ;
- }
-
- // 映射缓存区视图 , 得到指向共享内存的指针
- // 将hFileMapping共享内存衍射到本进程的地址空间中
- lpBase = MapViewOfFile(
- hMapFile, // 共享内存的句柄
- FILE_MAP_ALL_ACCESS, // 可读写许可
- 0,
- 0,
- buf_size
- );
-
- if (0 == lpBase)
- {
- printf("create lpBase fail\n"