2008-10-03 35 views
0

使用Bob King的想法我寫了下面的方法。Win32_LogicalDisk軟盤失敗

它可以在CD,可移動驅動器,普通驅動器上使用。

然而,對於軟盤它總是返回「不可用」。有任何想法嗎?

public static void TestFloppy(char driveLetter) { 
    using(var searcher = new ManagementObjectSearcher( @"SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '" + driveLetter + ":'")) 
    using(var logicalDisks = searcher.Get()) { 
     foreach(ManagementObject logicalDisk in logicalDisks) { 
      var fs = logicalDisk[ "FreeSpace" ]; 
      Console.WriteLine("FreeSpace = " + (fs ?? "Not Available")); 
      logicalDisk.Dispose(); 
     } 
    } 
} 

回答

1

我很抱歉,我沒有更好的答案,但我用來做同樣的事情(使用ManagementObjectSearcher),發現每次代碼運行軟盤驅動器會做某種尋求/ init序列。

所以不是我改的下方,interate:

ManagementClass comp = new ManagementClass(scope, new ManagementPath(obj), null); 
comp.Get(); 
objs = comp.GetInstances(); 

我想說這是一個WMI已知的bug,但不幸的是代碼中的註釋不留任何提示:(