C# 确定文件所在的物理硬盘驱动器?

C# 确定文件所在的物理硬盘驱动器?,c#,file,disk,C#,File,Disk,如何找到文件/目录所在的物理驱动器。我想比较两个文件,如果它们在两个单独的驱动器上,那么我可以通过同时读取两个文件来加速比较 关于这可能需要p/Invoke 从以上链接: 您需要的Win32函数称为DeviceIoControl()。API文档可在上找到。使用控制代码IOCTL\u STORAGE\u GET\u DEVICE\u NUMBER调用DeviceIoControl(),您将获得给定分区设备句柄的物理磁盘驱动器。可以使用CreateFile()API检索分区的设备句柄 不管怎样,都

如何找到文件/目录所在的物理驱动器。我想比较两个文件,如果它们在两个单独的驱动器上,那么我可以通过同时读取两个文件来加速比较


关于

这可能需要p/Invoke

从以上链接:

您需要的Win32函数称为DeviceIoControl()。API文档可在上找到。使用控制代码IOCTL\u STORAGE\u GET\u DEVICE\u NUMBER调用DeviceIoControl(),您将获得给定分区设备句柄的物理磁盘驱动器。可以使用CreateFile()API检索分区的设备句柄


不管怎样,都要同时阅读

在最坏的情况下,它可能会稍微慢一点(取决于实际的物理磁盘)


充其量它会更快。

无论如何,我都会同时读取这两个文件,特别是如果它在硬盘上的多个位置同时读取C#@n00b文件,会由于普通硬盘的高寻道时间而显著降低读取速度。@CodeInChaos:取决于磁盘。例如,如果它在RAID阵列上……但由于符号链接和连接,您无法真正按驱动器号执行。固态硬盘也有不同的性能特点,其中最有可能的是并行读取并不比顺序读取慢。@codeinchao正如Mitch所说,因为它的性能损失真的没有那么大,硬盘越来越快,而c#(.NET)越来越慢,我不认为这是个问题;P但您可以使用大小阈值(如果文件