基于文件的位图API

时间:2014-06-04 11:26:17

标签: c++ c

我想在位图中写入卷上的已更改扇区。我不认为在内存位图中使用它是好的,因为卷可以 非常大,大量的RAM将被不断占用。我认为基于文件的位图(磁盘上文件中的位图)将是最佳的。 Windows缓存管理器的性能损失将大大减弱。 Windows有很多类可以使用内存位图进行操作 (位数组),但我找不到准备使用基于文件的位图的实现。 例如,我需要void,可以在此文件中设置一些位(从n到k)。 A可以写但我更喜欢使用ready lib。你知道吗? 惯例,api或libs为此?我接受c或c ++,用户或内核模式。

1 个答案:

答案 0 :(得分:2)

编辑:现在您已经说过位图的大小是2 ^ 32位,只需使用正常分配即可。使用64位进程分配GB不是问题。

首先,我假设您使用的是64位。如果不是,那就切换,因为它在处理大文件时简化了很多事情。

如果位图大于合理存储在页面文件中(> 20-50GB),请使用持久内存映射文件,否则只使用正常分配。内存映射文件提供了将数据保存在内存中的优点,但没有需要大量调页空间的缺点,因为该文件用作单独的页面文件。

如果文件小到足以容纳你的地址空间(64位128TB),那么你可以只映射整个文件,如果它更大,那么你只需要在你工作的部分进行映射。

有关如何将文件映射到内存的信息,请参阅:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx