【问题标题】:Why CreateFileMapping and MapViewOfFile, instead of just one function, combining the functionality of the two?为什么 CreateFileMapping 和 MapViewOfFile 不只是一个功能,而是结合了两者的功能?
【发布时间】:2012-02-05 06:18:00
【问题描述】:

有人可以解释一下拥有这两个功能的理由吗?而不是只有一个具有组合功能的功能?

有没有这两个不被当成一对的情况?

【问题讨论】:

  • 您创建文件映射对象一次,并多次映射视图。

标签: winapi


【解决方案1】:

具有不同功能的原因是,除了定义统一的参数(如页面和缓存的参数)之外,CreateFileMapping() 可用于锁定大于可用地址空间的文件/范围。 MapViewOfFile() 然后可以适当地放置和移动子范围,以使实际内容在地址空间中可用。

【讨论】:

    【解决方案2】:

    因为这会禁用一个重要的使用场景,映射一个大于您愿意花费的虚拟内存量的文件。

    或有可用的。地址空间碎片限制了您可以创建的视图大小,因为单个视图需要连续的地址范围。在 32 位版本的 Windows 上逐渐减少到大约 650 兆字节。完全取决于加载的 DLL 和创建的堆数。创建多个视图也是完全合理的。

    您可以轻松编写一个小辅助函数来将两者结合起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多