从给定的文件路径获取有关物理设备的信息

时间:2020-03-06 14:32:57  来源:igfitidea点击:

假设我们具有系统上可访问文件或者文件夹的完整路径。如何获得文件(或者文件夹)实际所在的物理设备的某种唯一标识符?

我的第一次尝试是使用System.IO.DriveInfo,这取决于是否有驱动器号。但是,UNC路径和映射到服务器上同一物理设备的多个网络驱动器增加了一些麻烦。例如,这3条路径均指向同一设备上的同一文件夹。

\myserver\users\brian\public\music\
s:\users\brian\public\music\          (here s:\ is mapped to \myserver\)
u:\public\users\music\                (here u:\ is mapped to \myserver\users\brian\)

最终,我的目标是采用这些多条路径并报告每台设备上已使用和可用的磁盘空间量。我想将这3条路径合并到报表中的单个项目中,而不是3个单独的项目中。

给定任意完整路径,是否有任何Windows API可以帮助找到此信息?

解决方案

这次Win API调用应该可以为我们提供有关磁盘空间的需求

GetDiskFreeSpaceEx

http://msdn.microsoft.com/zh-CN/library/aa364937(VS.85).aspx

另外,要确定这三个映射是否都来自同一物理磁盘,请执行以下操作:

GetVolumeInformation

并比较返回的卷序列号

http://msdn.microsoft.com/zh-CN/library/aa364993(VS.85).aspx