2008-09-22 59 views
3

假設您具有系統上可訪問文件或文件夾的完整路徑。如何獲得文件(或文件夾)實際駐留的物理設備的某種唯一標識符?從給定文件路徑獲取有關物理設備的信息

我的第一次嘗試是使用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可以幫助找到任何任意完整路徑的信息?

回答

2

這場比賽的勝利API調用應該得到你所需要關於什麼的磁盤空間

GetDiskFreeSpaceEx 

http://msdn.microsoft.com/en-us/library/aa364937(VS.85).aspx

另外,以確定三個映射都是從同一個物理磁盤,進行調用

GetVolumeInformation 

,並比較返回的卷序列號

http://msdn.microsoft.com/en-us/library/aa364993(VS.85).aspx

+0

但是,當我在這個函數中傳遞這3條路徑中的每條路徑時,我會得到3個答案 - 是的,它們都是相同的,但我怎麼能確定它們都駐留在相同的物理設備? – 2008-09-22 16:56:53