0

我想找出文件在什么物理媒体上(通过文件名或句柄)。

我在这里读过,我可以通过调用确定给定分区句柄的物理驱动器DeviceIoControl

但是如何从文件名中获取分区句柄?(因为 NTFS 允许在文件夹中挂载分区,所以我不能简单地按驱动器号。)

我要问的原因是,使用异步方法将文件复制到另一个物理驱动器最快,但在同一个驱动器上,使用更大的缓冲区同步完成时速度最快。我想编写一个函数来确定给定文件和目标的最佳复制算法。

4

1 回答 1

1

Windows 中的卷通常映射到驱动器号(网络共享除外)。

您可以在源和目标上创建卷文件设备句柄,CreateFile()只需传入驱动器号路径(即:\\.\C:\)。将返回的句柄与DeviceIoControl(). 比较源和目标之间的物理驱动器,你应该很好。

此处解释了讨论:“要获取卷的物理驱动器标识符,请打开 ...” http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29。 aspx

于 2013-08-18T17:23:18.800 回答