Pregunta

Usando una idea de la idea de Bob King, escribí el siguiente método.

Funciona muy bien en CD, unidades extraíbles, unidades normales.

Sin embargo, para un disquete, siempre devuelve " No disponible " ;. ¿Alguna idea?

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();
        }
    }
}
¿Fue útil?

Solución

Lamento no tener una mejor respuesta, pero solía hacer lo mismo (usar ManagementObjectSearcher) y encontré que cada vez que el código ejecutaba la unidad de disquete hacía algún tipo de secuencia de búsqueda / inicio.

Entonces, en cambio, cambié a lo siguiente e interate:

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

Quiero decir que este es un error conocido en WMI pero desafortunadamente los comentarios del código no dejan ninguna pista :(

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top