0

Bob King のアイデアからのアイデアを使用して、次のメソッドを作成しました。

CD、リムーバブル ドライブ、通常のドライブでうまく機能します。

ただし、フロッピーの場合は常に「Not Available」が返されます。何か案は?

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();
        }
    }
}
4

1 に答える 1

1

申し訳ありませんが、より良い答えがありませんが、以前は同じこと (ManagementObjectSearcher を使用) を行っていましたが、コードが実行されるたびに、フロッピー ドライブがある種のシーク/初期化シーケンスを実行することがわかりました。

代わりに、以下に変更して対話します。

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

これは WMI の既知のバグだと言いたいのですが、残念ながらコードのコメントにはヒントがありません :(

于 2008-10-03T20:45:31.217 に答える