在Windows上创建写入缓存的明智排序

时间:2014-08-20 07:51:02

标签: windows algorithm winapi caching disk-io

我正在考虑为我正在构建的数据库系统创建一个wise ordering of writes cache(WOW缓存),但是我无法将文件的区域映射到物理磁盘区域。

我发现您可以使用DeviceIoControl来获取文件的虚拟群集分配,但我不确定如何将其与物理磁盘位置相关联。

这在Windows上可行吗?如果没有,则有解决方法或更适用的写缓存算法。

1 个答案:

答案 0 :(得分:0)

请尝试以下操作。

  1. 首先,使用CreateFile例程打开卷的句柄(使用\\?\C:作为卷 C:的名称。)
  2. DeviceIoControlIOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS一起使用,以检索一个或多个磁盘上卷的物理位置。
  3. 因此,您将拥有卷中的卷的物理位置(或更复杂的设置中的多个磁盘)以及卷中文件的虚拟群集分配。合并这两条信息以获取磁盘中文件的物理位置。

    P.S。可能,您可能还需要一些辅助信息,如磁盘扇区的大小和卷集的大小。