大内存映射文件(Windows32)

时间:2013-01-12 10:17:13

标签: memory-mapped-files

我想在Win32应用程序中使用MemoryMappingFiles。它们将像FIFO缓冲区一样用于进程间通信(一个应用程序写入此缓冲区,第二个应用程序将读取并处理它)。这个缓冲区最大可达500MB,因此我需要将它映射到虚拟的mempory中较小的部分(例如1MB)。我正在尝试用C ++编写用于缓冲区的通用代码,但我没有时间按。 MapViewOfFile存在一些问题,其粒度使我的代码变得复杂。我需要设置缓冲区大小和MaximumMapping大小,并设置WriteData(char const * buff,int count)和ReadData(char * buff,int count)。 是否有任何现有的项目或库来解决我的问题? (共享缓冲区FIFO - 设置大小和MaxMappingSize,WriteData,ReadData等参数。)

感谢您的建议

编辑: 我试图更好地解释它。 一个应用程序(例如main)从设备接收数据突发并存储到mem.map文件中。这个"文件"是由CreateFileMapping函数创建的。如果爆破完成主应用程序。向第二个应用程序发出信号(通过命名事件)。第二个应用程序从共享缓冲区复制到本地缓冲区。进行一些密集计算,将结果存储到另一个共享缓冲区并向主应用程序发出信号,表明结果已准备好,主应用程序显示结果。 在第二个应用程序中的计算需要大量的记忆,并且这个记忆在主要过程中是不可用的。这是相当复杂的方式的主要原因。 MaxMappingSize是一个参数,表示将从文件映射到虚拟内存应用程序空间的字节数。

0 个答案:

没有答案