基本思想:服务端和客户端
写共享内存
#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"
参考阅读
发表评论