2009-03-31 23 views
0

私はCDには、次のコードを使用している空き領域の量を決定しようとしています:CD-ROMの空き容量を調べるにはどうすればよいですか?

空き領域: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:301463552

理想的には、私は、Windowsは探検報告したいですr統計 - YYYの無料XXX。 Windowsエクスプローラは、702 MBのうち392 MBを解放していると報告しています。ありがとう!

アップデート(4月1日09):CDの空き領域を決定する機能は、WMIを超えて表示され、挿入されたディスクのファイルシステムに依存している 。私のテストによると、WindowsはCDフォーマットのCDFSの容量情報を表示しません。ただし、UDFでフォーマットされたCDの容量情報が表示されます。

また、私はhereと呼ばれるWMIを参照するための優れたネイティブユーティリティを配置しました。

答えて

0

CDの理論上の最大使用可能容量から未使用領域を判断しようとしていますか?

私の理解では、CD-ROMは読み取り専用のフォーマットなので、空き領域は決してありません。すべてのビットは既に書き込まれたデータに使用され、それ以上書き込むことはできないため、使用可能なスペースは決してありません。

ROMの未書き込み領域を知りたいのであれば、固定理論上の最大値(702MB?)から使用済み領域を差し引くだけです。固定された最大値は、どこかの仕様の一部でなければなりません。


は、あなたは、ドライブにディスクに関する詳細な情報を取得するには、おそらく「情報」や「状況」列で、デバイス上でmciSendString()を使用してに見たことがありますか?私は自分自身でこれを試していないので、私はそれが動作するのか分からない。

+0

これは私がやろうとしていることです。ただし、UsedSpaceは301463552バイト(287.49MB)と報告されており、414MB(702-287 = 415)の空き容量があると見なされます。 Explorerは392MBの空き容量があると報告しています。さらに、あなたのアプローチはCDでも効果的ですが、DVDの容量は異なります(http://tinyurl.com/c3y5ln)。 – Joel

+0

私はまだmciSendString()を試していませんが、私は理論的な最大値を使用してあなたの初期のアドバイスを取ったのですが、どのタイプのディスクが挿入されているのか知っています - 私の味のために少しkludgeyです。 – Joel

0

ManagementObject moのオブジェクトタイプとは何ですか? mo ["Size"]がint32しか格納していない場合、int64へのキャストはそれほど多くありません。

+0

私は、WMI/ManagementObject世界について多くのことを知らないが、これが最初のコンソール出力(FreeSpace)には影響しないことを初めて認めます。 – Joel

関連する問題