我按照设计在多个进程之间共享内存数据。
根据设计,应用程序需要多个内存文件,例如每个进程需要一个内存映射文件。但是某些进程需要较少的内存映射文件,例如它可以是10KB或更少。并且一些进程需要超过1mb的内存文件。一旦进程任务结束,那么我将使用相同的内存映射文件进行其他进程。
在这种情况下,我如何根据进程请求增加内存映射文件大小。就像我使用CreateFileMapping创建内存映射文件一样。我如何增加内存大小或减小大小。
我还有另一个子问题,如何在不关闭此内存映射文件的情况下清理此数据。 如果有人知道,请分享。
提前多多感谢。 原
答案 0 :(得分:1)
你可以这样做。请参阅NtExtendSection。
答案 1 :(得分:0)
否 - 您无法在创建后增加映射(请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537%28v=vs.85%29.aspx)!
你描述的尺寸听起来不成问题所以我只选择一个“足够大”的尺寸。
要清理您可以使用的数据,例如memset ()
(请参阅http://msdn.microsoft.com/en-us/library/1fdeehz6.aspx或http://www.cplusplus.com/reference/clibrary/cstring/memset/)或ZeroMemory()
(这只是映射到{{1的Windows API宏) }})。