MMF(独占/非共享内存映射文件)

时间:2012-05-29 22:35:26

标签: windows-ce win32-process .net-cf-3.5 windows-nt

我们的应用程序在WinCE5.0上运行(用.net cf编写)

由于某些原因,我们必须创建供我们的应用程序使用的MMF文件(MMF文件只能由我们的应用程序使用)。

现在我们注意到,在随机时间(我们无法准确找到何时以及在什么情况下)MMF文件被其他进程使用,该进程将数据写入其中。这使我们的MMF文件损坏。

请告诉我们如何避免这种情况。

换句话说,我们希望将MMF专门用于我们的应用程序而不是共享。

感谢。

1 个答案:

答案 0 :(得分:1)

Windows CE上的内存映射文件始终映射到虚拟地址空间的共享文件映射区域。所有进程都具有对该区域的读写访问权限。您无法保护此区域不被其他进程覆盖。

.NET Compact Framework本身使用内存映射来映射该区域中的已加载程序集,以避免将它们加载到进程槽中。我希望您会遇到其他问题,例如当.NETCF尝试从已损坏的程序集中JIT代码时获取TypeLoadExceptionMissingMethodExceptionExecutionEngineException

您确定没有关闭文件映射句柄或底层文件句柄吗?这可能导致Windows认为内存是免费的,并将其重用于其他目的。