我想并行化某些磁盘I / O,但如果我的文件位于同一磁盘上,这将严重损害性能。
请注意,驱动程序和实际磁盘之间可能有各种过滤器驱动程序 - 例如两个文件可能位于不同的虚拟磁盘(VHD)上,但位于同一物理磁盘上。
如何检测两个HANDLE
是否引用同一物理磁盘上的文件(或分区或其他内容)?
如果无法做到这一点 - 下一个最佳/最接近的替代方案是什么?
答案 0 :(得分:0)
这相当复杂,但第一步是从句柄中获取卷名。您可以使用GetFinalPathNameByHandle功能在Vista或更高版本上执行此操作。如果您需要支持早期的Windows版本,可以使用this example。
现在您已拥有文件名,您可以解析驱动器号或卷名,并使用this question中接受的答案中说明的方法。