我想并行化一些磁盘 I/O,但是如果我的文件在同一个磁盘上,这会严重影响性能。
请注意,驱动程序和实际磁盘之间可能存在各种过滤器驱动程序——例如,两个文件可能位于不同的虚拟磁盘 (VHD) 上,但位于同一个物理磁盘上。
如何检测两个HANDLE
s 是否引用同一物理磁盘上的文件(或分区或其他)?
如果这是不可能的 - 下一个最佳/最接近的选择是什么?
这相当复杂,但第一步是从句柄中获取卷名。您可以使用GetFinalPathNameByHandle函数在 Vista 或更高版本上执行此操作。如果您需要支持早期的 Windows 版本,可以使用此示例。
现在您有了文件名,您可以解析出驱动器号或卷名,并使用该问题的已接受答案中解释的方法。