#pragma once

#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <windows.h>

template<class T>
class CMySM
{
public:
    CMySM()
    {
        m_pMem = NULL;
        m_hMem = NULL;
    }

    ~CMySM()
    {
        Close();
    }

    BOOL Create(LPCTSTR szName)
    {
        )
            return FALSE;

        do
        {
            m_hMem = CreateFileMapping(INVALID_HANDLE_VALUE, NULL,
                PAGE_READWRITE | SEC_COMMIT, , sizeof(T), szName);
            if (m_hMem == NULL)
                break;

            m_pMem = MapViewOfFile(m_hMem, FILE_MAP_ALL_ACCESS, , , );
            if (m_pMem == NULL)
                break;

            memset(m_pMem, , sizeof(T));

            return TRUE;
        }
        while (FALSE);

        Close();

        return FALSE;
    }

    BOOL Open(LPCTSTR szName)
    {
        )
            return FALSE;

        do
        {
            m_hMem = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, szName);
            if (m_hMem == NULL)
                   break;

            m_pMem = MapViewOfFile(m_hMem, FILE_MAP_ALL_ACCESS, , , );
            if (m_pMem == NULL)
                break;

            return TRUE;
        }
        while (FALSE);

        Close();

        return FALSE;
    }

    void Close()
    {
        if (m_pMem != NULL)
        {
           UnmapViewOfFile(m_pMem);
           m_pMem = NULL;
        }

        if (m_hMem != NULL)
        {
           CloseHandle(m_hMem);
           m_hMem = NULL;
        }
    }

    inline T* Get(){return (T*)m_pMem;}    

public:
    PVOID    m_pMem;
    HANDLE    m_hMem;
};

c/c++常用代码 -- 共享内存的更多相关文章

  1. php操作共享内存shmop类及简单使用测试(代码)

    SimpleSHM 是一个较小的抽象层,用于使用 PHP 操作共享内存,支持以一种面向对象的方式轻松操作内存段.在编写使用共享内存进行存储的小型应用程序时,这个库可帮助创建非常简洁的代码.可以使用 3 ...

  2. 撸代码--linux进程通信(基于共享内存)

    1.实现亲缘关系进程的通信,父写子读 思路分析:1)首先我们须要创建一个共享内存. 2)父子进程的创建要用到fork函数.fork函数创建后,两个进程分别独立的执行. 3)父进程完毕写的内容.同一时候 ...

  3. 撸代码--类QQ聊天实现(基于linux 管道 信号 共享内存)

    一:任务描写叙述 A,B两个进程通过管道通信,像曾经的互相聊天一样,然后A进程每次接收到的数据通过A1进程显示(一个新进程,用于显示A接收到的信息),A和A1间的数据传递採用共享内存,相应的有一个B1 ...

  4. [转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile

    http://blog.csdn.net/stpeace/article/details/39534361 进程间的通信方式有很多种, 上次我们说了最傻瓜的“共享外存/文件”的方法. 那么, 在本文中 ...

  5. 作为phper既然了解共享内存函数shmop的使用方法,那么就必须要了解一下信号量是什么,以及信号量使用的代码案例

    在单独的一个PHP进程中读写.创建.删除共享内存方面上你应该没有问题了.但是实际运行中不可能只是一个PHP进程在运行中.如果在多个进程的情况下你还是沿用单个进程的处理方法,你一定会碰到问题--著名的并 ...

  6. C扩展 从共享内存shm到memcache外部内存

    引言 - ipc - shm 共享内存 本文会通过案例了解ipc 的共享内存机制使用, 后面会讲解C 如何使用外部内存服务memcached. 好先开始了解 linux 共享内存机制. 推荐先参看下面 ...

  7. C# 进程间通信(共享内存)

    原文:C# 进程间通信(共享内存) 进程间通信的方式有很多,常用的方式有: 1.共享内存(内存映射文件,共享内存DLL). 2.命名管道和匿名管道. 3.发送消息 本文是记录共享内存的方式进行进程间通 ...

  8. 修改linux共享内存大小

    这是实际linux系统显示的实际数据: beijibing@bjb-desktop:/proc/sys/kernel$ cat shmmax  33554432 beijibing@bjb-deskt ...

  9. 单元测试系列之九:Sonar 常用代码规则整理(一)

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...

随机推荐

  1. 更改Pch配置

    在Build Settings 里搜索prefix  在第一个AppleLLVM.7.0 有一个 PrefixHeader 属性  在属性里添加 $(SRCROOT)/加上pch文件名字    然后编 ...

  2. 蛮考验基础的JS笔试题(有坑小心!)

    1.  考察this var length = 10 function fn(){ alert(this.length) } var obj = { length: 5, method: functi ...

  3. UNICODE字符串与多字节字符串的转换

    相互转换的两个函数的声明: 1. 多字节字符串与宽字符串的转换 int MultiByteToWideChar( UINT CodePage, // code page,一般设为 CP_ACP DWO ...

  4. about control %CPU

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #define timesize 200000 ...

  5. 泛型集合转换为DataTable

    在做项目中,遇到了将集合转换为DataTable的使用,在网上看了资料,在这里记录下来,分享. using System; using System.Collections.Generic; usin ...

  6. responseXML 属性

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...

  7. 在c#中使用mongo-csharp-driver操作mongodb

    1)下载安装 下载地址:http://github.com/mongodb/mongo-csharp-driver/downloads 编译之后得到两个dll MongoDB.Driver.dll:顾 ...

  8. 批量关闭 WordPress 的 Pingback 和 Trackback 功能

    方法很简单,WordPress 后台即可实现,在设置-讨论中把"接收来自外部博客的引用通告(Pingback 和 Trackback)"这一项勾选去掉,保存设置.这样,以后新增的文 ...

  9. PHPExcel导出导入excel、csv等格式数据

    <?php if(!defined('BASEPATH')) exit('No direct script access allowed'); //物资发料单明细 class Read_writ ...

  10. spark概论

    一.概述 1.轻:(1)采用语言简洁的scala编写:(2)利用了hadoop和mesos的基础设施   2.快:spark的内存计算.数据本地性和传输优化.调度优化,使其在迭代机器学习,ad-hoc ...