Win32_LogicalDisk falha para disquetes
Pergunta
Usando uma idéia de Bob King 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". Alguma idéia?
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();
}
}
}
Solução
Eu sinto muito que eu não tenho uma resposta melhor, mas eu costumava fazer a mesma coisa (usar o ManagementObjectSearcher) e descobriu que cada vez que o código funcionou a unidade de disquete faria algum tipo de buscar / seqüência de inicialização.
Então, ao invés eu mudei para o abaixo e Interate:
ManagementClass comp = new ManagementClass(scope, new ManagementPath(obj), null);
comp.Get();
objs = comp.GetInstances();
Eu quero dizer que este é um bug conhecido em WMI, mas infelizmente os comentários de código não deixe quaisquer sugestões: (
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow