确定文件在哪个物理硬盘上?
Posted
技术标签:
【中文标题】确定文件在哪个物理硬盘上?【英文标题】:Determine what physical hard drive a file is on? 【发布时间】:2011-07-09 14:56:17 【问题描述】:如何找到文件/目录所在的物理驱动器。我想比较 2 个文件,如果它们位于两个单独的驱动器上,那么我可以通过同时读取两个文件来加快比较速度。
问候
【问题讨论】:
无论如何我都会同时阅读,尤其是如果它的 C# @n00b 在硬盘上的多个位置同时读取会显着减慢读取速度,因为普通硬盘的寻道时间较长。 @CodeInChaos:取决于磁盘。例如,如果它在 RAID 阵列上... 但是由于符号链接和连接,您不能真正按驱动器号执行此操作。 SSD 也具有不同的性能特征,其中并行读取很可能并不比顺序读取慢。 @CodeInChaos Mitch 所说的很好,因为它实际上并没有那么大的性能损失,而且驱动器越来越快,而 c#(.NET) 越来越慢,我不认为这是一个问题; P 但您可以使用大小阈值(如果文件这可能需要 P/Invoke。
Way to know if two partitions are in one physical hard disk without WMI?
从上面的链接:
您需要的 Win32 函数称为 DeviceIoControl()。 API 文档可以在http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx 找到。使用控制代码 IOCTL_STORAGE_GET_DEVICE_NUMBER 调用 DeviceIoControl(),您将获得给定分区设备句柄的物理磁盘驱动器。可以使用 CreateFile() API 检索分区的设备句柄。
【讨论】:
【参考方案2】:无论如何同时阅读。
在最坏的情况下,它可能会稍微慢一些(取决于实际的物理磁盘)。
充其量会更快。
【讨论】:
以上是关于确定文件在哪个物理硬盘上?的主要内容,如果未能解决你的问题,请参考以下文章