문제

Bob King Idea의 아이디어를 사용하여 다음 방법을 썼습니다.

CD, 탈착식 드라이브, 일반 드라이브에서 훌륭하게 작동합니다.

그러나 플로피의 경우 항상 "사용할 수 없음"을 반환합니다. 어떤 아이디어?

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();
        }
    }
}
도움이 되었습니까?

해결책

더 나은 답변이 없어서 죄송하지만, 같은 일을했는데 (ManagementObjectSearcher를 사용하곤) 코드가 실행할 때마다 플로피 드라이브가 일종의 Seek/Init 시퀀스를 수행 할 것임을 알았습니다.

대신 아래로 변경하고 인터레이션합니다.

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

나는 이것이 WMI에서 알려진 버그라고 말하고 싶지만 불행히도 코드 댓글에는 힌트가 남지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top