我正在考虑为我正在构建的数据库系统创建一个wise ordering of writes cache(WOW缓存),但是我无法将文件的区域映射到物理磁盘区域。
我发现您可以使用DeviceIoControl来获取文件的虚拟群集分配,但我不确定如何将其与物理磁盘位置相关联。
这在Windows上可行吗?如果没有,则有解决方法或更适用的写缓存算法。
答案 0 :(得分:0)
请尝试以下操作。
CreateFile
例程打开卷的句柄(使用\\?\C:
作为卷 C:的名称。)DeviceIoControl
与IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
一起使用,以检索一个或多个磁盘上卷的物理位置。因此,您将拥有卷中的卷的物理位置(或更复杂的设置中的多个磁盘)以及卷中文件的虚拟群集分配。合并这两条信息以获取磁盘中文件的物理位置。
P.S。可能,您可能还需要一些辅助信息,如磁盘扇区的大小和卷集的大小。