c++共享内存操作实例

原创 2012年03月21日 22:42:41

  

1、创建共享内存 

       HANDLE hMapping;

LPTRANSDATA lpData;   //要发送的结构体
hMapping = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,1024,SHAREMEM_CMD_SEND);

if (hMapping != NULL)
{
lpData = (LPTRANSDATA)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
if (lpData == NULL)
{
CloseHandle(hMapping);
hMapping = NULL;
AfxMessageBox("MapViewOfFile() failed.");
return;
}
}
else
{
AfxMessageBox("CreateFileMapping() failed.");
return;
}
CopyMemory(lpData,lpMsg,sizeof(LPTRANSDATA));


2、打开创建的映射文件

         HANDLE hMapping;
hMapping = OpenFileMapping(FILE_MAP_READ,FALSE,SHAREMEM_CMD_SEND);
if (hMapping == NULL)
{
MessageBox("hMapping == NULL");
return NULL;
}
transData = (LPTRANSDATA)MapViewOfFile(hMapping,FILE_MAP_READ,0,0,0);
if (transData == NULL)
{
CloseHandle(hMapping);
MessageBox("str == NULL");
return NULL;
}

if (transData  != NULL)
{
UnmapViewOfFile(transData );
transData = NULL;
}
if (hMapping != NULL)
{
CloseHandle(hMapping);
hMapping = NULL;

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++指针和C指针的区别:前者类型要求更严格

先看看在C语言中, test.c如下: int main() { int *p; char *q; void *v; v = p; q = v; return 0; }

Windows共享内存示例

Windows共享内存示例   共享内存主要是通过映射机制实现的。   Windows 下进程的地址空间在逻辑上是相互隔离的,但在物理上却是重叠的。所谓的重叠是指同一块内存区域可能被多个进程同...

再谈IPC之共享内存 (某公司实习生招聘笔试试题)

我们先来看看原题目:

进程间通信_共享内存类_C++实现

忘记是从哪里整理的一个类了,但非常好用,可以将其放在自己的项目中实现不同进程间数据的通信。 头文件:/*************************************************...
  • fengrx
  • fengrx
  • 2009-04-13 13:39
  • 9105

如何获取float变量在内存中的二进制数据?

#include void printBinaryDigit(float *pf) { int n = *(int *)pf; int sizeOfBits = sizeof(int) * 8;...

C/C++是否存在全局的或者静态的register变量?

看程序:

完全二叉树叶子节点数n0和总结点数N的关系 (某公司校园招聘笔试试题)

若完全二叉树的节点个数为2N-1,则叶节点个数为()     A)N-1 B)2×N C)2N-1 D)2N

C++中的try catch

先来看一个简单的程序:

Windows核心编程之共享内存

Windows共享数据和信息的机制:RPC、COM、OLE、DDE、窗口消息、剪贴板、邮箱、管道、套接字以及内存映射文件。 内存映射:通过让两个或多个进程映射同一个文件。(在进程空间中保留一个地址空间...

简单windows共享内存封装类

简单windows共享内存封装类
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)