【问题标题】:MMF (Exclusive /non shared memory mapped file)MMF(独占/非共享内存映射文件)
【发布时间】:2012-05-29 22:35:26
【问题描述】:

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

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

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

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

换句话说,我们希望 MMF 专供我们的应用程序使用,而不是在其他应用程序之间共享。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    Windows CE 上的内存映射文件总是映射在虚拟地址空间的共享文件映射区域中。所有进程都可以对该区域进行读写访问。您无法保护该区域不被其他进程覆盖。

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2012-09-08
      • 1970-01-01
      • 2019-05-08
      • 2016-02-23
      • 1970-01-01
      相关资源
      最近更新 更多