2009-03-31 2 views
0

나는 CD는 다음과 같은 코드를 사용하여 한 여유 공간의 양을 결정하려고 시도하고있다 :CD-ROM의 여유 공간을 어떻게 결정합니까?

의 FreeSpace : 0
CapacitySpace 위의 코드를 실행

ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_LogicalDisk WHERE DriveType =5"); 
foreach(ManagementObject mo in searcher.Get()) 
{ 
    Console.WriteLine("FreeSpace: "+mo["FreeSpace"].ToString()); 
    Console.WriteLine("CapacitySpace: " + mo["Size"].ToString()); 
    UInt64 usedspace = (UInt64)mo["Size"] - (UInt64)mo["FreeSpace"]; 
    Console.WriteLine("UsedSpace: " + usedspace.ToString()); 
} 

을, 나는 다음과 같은 출력이 나타납니다 : 301463552
UsedSpace : 이상적으로 301,463,552

에서 Windows를 살펴보고 싶습니다 r 통계 - YYY의 XXX 무료입니다. Windows 탐색기는 392MB (702MB)를보고합니다. 감사!

업데이트 (4월 1일 09) : CD의 여유 공간을 결정하는 능력이 WMI 넘어 나타나고 삽입 된 디스크의 파일 시스템에 의존 . 필자의 테스트 결과에 따르면 Windows는 CD 형식의 CDFS에 대한 용량 정보를 표시하지 않습니다. 그러나 UDF로 형식화 된 CD의 용량 정보를 표시합니다.

또한, 나는 here이라는 WMI 브라우징을위한 훌륭한 고유 유틸리티를 사용했습니다.

답변

0

CD의 이론상 최대 사용 가능 공간에서 사용되지 않은 공간을 확인하려고합니까?

제 생각에 CD-ROM은 읽기 전용 형식이므로 여유 공간이 없습니다. 모든 비트는 이미 기록 된 데이터에 사용되며 더 이상 기록 할 수 없으므로 사용 가능한 공간이 없습니다.

ROM의 미공개 공간을 알고 싶다면 고정 된 이론적 최대 크기 (702MB?)에서 사용 된 공간을 빼면됩니다. 고정 된 최대 값은 어딘가의 스펙의 일부 여야합니다.


당신은 드라이브에있는 디스크에 대한 자세한 정보를 얻으려면, 아마도 "정보"또는 "상태"문자열, 장치에 mciSendString()를 사용으로 봤어? 나는 이것을 시도하지 않았기 때문에 그것이 효과가 있을지 확신 할 수 없다.

+0

그게 내가하려는거야. 그러나 UsedSpace는 414MB (702-287 = 415)에 해당하는 301463552 바이트 (287.49MB)로보고됩니다. Explorer는 392MB의 여유 공간이 있다고보고합니다. 또한 CD에 대한 접근 방식은 잘되지만 DVD의 용량은 다릅니다 (http://tinyurl.com/c3y5ln). – Joel

+0

아직 mciSendString()을 시도하지는 않았지만 어떤 유형의 디스크가 삽입되었는지 알기 때문에 이론적 인 최대 값을 사용하여 이전 조언을 취했습니다 - 내 취향에 조금 씩씩하지만 제한된 테스트에서 트릭을 수행합니다. – Joel

0

관리 개체 mo의 개체 유형은 무엇입니까? 왜냐하면 mo [ "Size"]가 int32 만 저장하면 int64 로의 캐스팅이 많이하지 않기 때문입니다.

+0

저는 WMI/ManagementObject 세계에 대해 많이 알지 못하지만 처음으로 콘솔 출력 (FreeSpace)에 영향을 미치지 않습니다. – Joel