質問

ボブキングのアイデアのアイデアを使用して、次のメソッドを作成しました。

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();
        }
    }
}
役に立ちましたか?

解決

より良い答えが得られないのは残念ですが、以前は同じことをして(ManagementObjectSearcherを使用)、コードがフロッピードライブを実行するたびに何らかのシーク/初期化シーケンスを実行することがわかりました。

だから代わりに私は以下に変更し、対話しました:

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top