문제
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에서 알려진 버그라고 말하고 싶지만 불행히도 코드 댓글에는 힌트가 남지 않습니다.
제휴하지 않습니다 StackOverflow