如何在Windows中使用共享内存

时间:2013-03-17 13:49:13

标签: visual-c++

考虑一下,我有两个Windows独立的GUI应用程序。每当我按下第一个GUI中的命令按钮时,其他GUI应捕获按钮的状态,并在其中的文本框中显示ON或OFF。如何使用共享内存来完成此操作。

PS:我使用的是VC ++ 2008。

1 个答案:

答案 0 :(得分:2)

看看:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551%28v=vs.85%29.aspx

在流程1中:

CreateFileMapping():它将创建共享内存块,如果它不存在则使用在最后一个参数中提供的名称并返回一个句柄(您可以将其称为指针),如果成功的话。

MapViewOfFile():它在进程地址空间中映射(包含)此共享块并返回一个句柄(再次,你可以说一个指针)。

使用MapViewOfFile()返回的指针,只能访问该共享块。

在过程2中:

OpenFileMapping():如果CreateFileMapping()成功创建了共享内存块,则可以使用相同的名称(用于创建共享内存块的名称)。

UnmapViewOfFile():它将取消映射(您可以从该进程地址空间中删除共享内存块)。当您完成使用共享内存(即访问,修改等)时,请调用此函数。

Closehandle():最后从进程中分离共享内存块,使用参数调用此函数,使用OpenFileMapping()或CreateFileMapping()返回句柄。