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

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
scroll top