Windows操作系统下面利用C++语言进行内存共享程序的编写
来源:互联网 发布:besiege mac 下载 编辑:程序博客网 时间:2024/04/30 08:23
创建共享内存分以下几个步骤:
1.定义共享内存的结构体;
2.利用CreateFileMapping函数创建共享内存;
3.定义指向共享内存结构体的指针pShareMem,利用MapViewOfFile函数将刚刚创建的内存映射到定义指针pShareMem。
读写共享内存分以下几个步骤:
1.定义共享内存的结构体;
2.用OpenFileMapping函数打开上面创建的共享内存区,该函数返回共享内存的地址;
3.将共享内存映射为文件指针;
4.定义指向共享内存结构体的指针,将共享内存的内容拷贝到结构体指针里。
HANDLE hMap;
HANDLE hAddress;
int iErrCode;
//第一步要定义所要共享的内容的结构体
typedef struct _TShareMem
{
char Data[256];
}TShareMem;
void CreateMap()
{
CString strBuf;
CString strShare = "共享内存";
char szBuf[256];
TShareMem* pShareMem;
//创建共享内存,这个函数的最后一个参数即是创建的共享内存的名称
hMap=::CreateFileMapping((HANDLE)-1,NULL,PAGE_READWRITE,0,sizeof(TShareMem),_T("NewMap"));
if ( hMap == NULL )
{
iErrCode = GetLastError();
AfxMessageBox("不能创建内存映射文件!");
}
//写共享内存区,将内存映射为文件
pShareMem = (TShareMem*)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);
memcpy(pShareMem,strShare,strShare.GetLength());
//打开刚刚创建的共享内存区
hMap = ::OpenFileMapping( FILE_MAP_WRITE, false, _T("NewMap"));
if (hMap == 0 )
{
iErrCode = GetLastError();
AfxMessageBox("不能定位内存映射文件块!");
}
//读共享内存区
hAddress = MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);
//pShareMem = (TShareMem*)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);
if ( hAddress == NULL )
AfxMessageBox("Can''t View Memory Map");
memset(szBuf,0,sizeof(szBuf));
//拷贝共享内存区的内容
CopyMemory(szBuf,hAddress,255);
AfxMessageBox(szBuf);
}
- Windows操作系统下面利用C++语言进行内存共享程序的编写
- C++语言进行内存共享程序的编写
- Windows下c语言串口的编写(利用API)
- 编写C语言进行读目录程序
- C++编写Windows服务程序 用 C 语言编写 Windows 服务程序的五个步骤
- 利用霍纳规则,编写C语言程序对多项式进行求值
- 用 C 语言编写 Windows 服务程序的五个步骤
- 用 C 语言编写 Windows 服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 用 C 语言编写 Windows 服务程序的五个步骤
- 用C 语言编写 Windows 服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 用 C 语言编写 Windows 服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 服务质量Qos-Quality of service
- ipv6 6to4 tunnel config
- 如何使用# ## ... _ _VA_ARGS_ _
- AS5300语音网关配置
- FTTB+NAT+DHCP+pppoe+CBAC+vpn client+AAA
- Windows操作系统下面利用C++语言进行内存共享程序的编写
- Use a Static Route to the Null0 Interface for routing Loop
- win2k下svnsync不能使用的临时的解决办法
- 设置Router阻击红色代码!
- Cisco’s QoS Device Manager
- Configuring Secure Shell on Cisco IOS Routers
- 关于AI的经典网址
- modem池配置
- Visual Studio .NET已检测到指定的Web服务器运行的不是ASP.NET 1.1 版问题的解决