Question

En utilisant une idée de Bob King, j'ai écrit la méthode suivante.

Cela fonctionne très bien sur les CD, les lecteurs amovibles et les lecteurs normaux.

Cependant, pour une disquette, le résultat est toujours "Non disponible". Des idées?

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();
        }
    }
}
Était-ce utile?

La solution

Je suis désolé de ne pas avoir une meilleure réponse, mais je faisais la même chose (avec ManagementObjectSearcher) et je trouvais que chaque fois que le code était exécuté, le lecteur de disquette faisait une sorte de séquence de recherche / initiation.

Donc, au lieu de cela, j'ai changé pour le ci-dessous et interate:

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

Je veux dire que c'est un bogue connu dans WMI, mais malheureusement, les commentaires de code ne laissent aucune indication: (

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top