基本思想:服务端和客户端

写共享内存

#include

#include

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"

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。