考虑一下,我有两个Windows独立的GUI应用程序。每当我按下第一个GUI中的命令按钮时,其他GUI应捕获按钮的状态,并在其中的文本框中显示ON或OFF。如何使用共享内存来完成此操作。
PS:我使用的是VC ++ 2008。
答案 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()返回句柄。