如何找出文件所在的物理驱动器?

时间:2013-08-18 17:15:55

标签: c++ winapi

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

我已阅读here,我可以通过DeviceIoControl调用确定给定分区句柄的物理驱动器。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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