Posso testar uma unidade de disquete usando WMI & System.Management namespace?
Pergunta
Eu iria descobrir o disquete estado inserido :
- não flexível inserido
- não formatado flexível inserido
- formatado flexível inserido
Pode este determinado usando "WMI" no espaço de nomes System.Management?
Se assim for, eu posso gerar eventos quando o estado disquete inserido mudanças?
Solução 2
Usando Bob Reis ideia que eu escrevi o seguinte método.
Ele funciona muito bem em CD, unidades removíveis, unidades regulares.
No entanto, para um disquete sempre voltar "Não disponível".
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();
}
}
}
Outras dicas
Isto vem de Scripting Centre @ 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
Você também será capaz de dizer se ele é formatado ou não, verificando outros membros da Win32_LogicalDisk classe .
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow