我想找出文件在什么物理媒体上(通过文件名或句柄)。
我在这里读过,我可以通过调用确定给定分区句柄的物理驱动器DeviceIoControl
。
但是如何从文件名中获取分区句柄?(因为 NTFS 允许在文件夹中挂载分区,所以我不能简单地按驱动器号。)
我要问的原因是,使用异步方法将文件复制到另一个物理驱动器最快,但在同一个驱动器上,使用更大的缓冲区同步完成时速度最快。我想编写一个函数来确定给定文件和目标的最佳复制算法。
Windows 中的卷通常映射到驱动器号(网络共享除外)。
您可以在源和目标上创建卷文件设备句柄,CreateFile()
只需传入驱动器号路径(即:\\.\C:\)。将返回的句柄与DeviceIoControl()
. 比较源和目标之间的物理驱动器,你应该很好。
此处解释了讨论:“要获取卷的物理驱动器标识符,请打开 ...” http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29。 aspx