¿Puedo probar una unidad de disquete con WMI & amp; System.Management namespace?

StackOverflow https://stackoverflow.com/questions/154754

  •  03-07-2019
  •  | 
  •  

Pregunta

Descubriría el estado insertado del disquete :

  • no hay ningún disquete insertado
  • disquete sin formato insertado
  • se ha insertado un disquete formateado

¿Se puede determinar esto utilizando " WMI " en el espacio de nombres System.Management?

Si es así, ¿puedo generar eventos cuando cambie el estado insertado del disquete ?

¿Fue útil?

Solución 2

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

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

Sin embargo, para un disquete, siempre devuelve " No disponible " ;.

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

Otros consejos

Esto proviene de Scripting Center @ MSDN :

strComputer = "."
Set objWMIService = GetObject( _
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_LogicalDisk Where DeviceID = 'A:'")

For Each objItem in colItems
    intFreeSpace = objItem.FreeSpace
    If IsNull(intFreeSpace) Then
        Wscript.Echo "There is no disk in the floppy drive."
    Else
        Wscript.Echo "There is a disk in the floppy drive."
    End If
Next

También podrá saber si está formateado o no, consultando a otros miembros de Win32_LogicalDisk class .

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