如何检测两个文件是否在同一个物理磁盘上?

时间:2012-07-13 14:33:49

标签: winapi file-io disk

我想并行化某些磁盘I / O,但如果我的文件位于同一磁盘上,这将严重损害性能。

请注意,驱动程序和实际磁盘之间可能有各种过滤器驱动程序 - 例如两个文件可能位于不同的虚拟磁盘(VHD)上,但位于同一物理磁盘上。

如何检测两个HANDLE是否引用同一物理磁盘上的文件(或分区或其他内容)?

如果无法做到这一点 - 下一个最佳/最接近的替代方案是什么?

1 个答案:

答案 0 :(得分:0)

这相当复杂,但第一步是从句柄中获取卷名。您可以使用GetFinalPathNameByHandle功能在Vista或更高版本上执行此操作。如果您需要支持早期的Windows版本,可以使用this example

现在您已拥有文件名,您可以解析驱动器号或卷名,并使用this question中接受的答案中说明的方法。