2012-04-02 7 views
3

ボリュームに関する空き容量情報を調べようとしています。文字が割り当てられているものは正常です(GetDiskFreeSpaceEx)。私はまた、VDS(仮想ディスクサービス)に接続し、AvailableAllocationUnits(A)とAllocationUnitSize(B)、Windowsが示さA * B =フリーサイズと呼ばれるものを取得しました。しかし、Bは4096なので、これは正確なバイト数ではありません。文字が割り当てられていないディスクボリューム上の空き領域を取得するにはどうすればよいですか?

  1. これはVDSなしでどのように判断できますか?
  2. より正確な方法(バイト単位)はありますか?

に関して、
ケイト

+1

http://stackoverflow.com/questions/412632/how-do-i-retrieve-disk-information-in-cなぜ4096は正確なバイト数ではないと思いますか? 4096バイトは4KBです(1,024バイト/ KBを使用) – ChrisPatrick

+0

こんにちは、DriveInfoはできません。それはそれらの量についても知らない。私は、GUID(\\?\ GLOBALROOT \ Device \ HarddiskVolume15など)による文字アクセスのないボリュームについて話しています。可能であれば、VDSなしでそれを判断する必要があります(精度が1バイトの精度のように不可能な場合)4096の丸めは問題ありません。 – SmartK8

+0

申し訳ありませんが、私はあなたに戻ったことはありません。あなたが正しい。ありがとう。 – SmartK8

答えて

1

Windowsでは、次のコマンドを実行し、出力を解析できます。

vssadmin list volumes 

これが得られます。そして、

C:\Windows\system32>vssadmin list volumes 
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool 
(C) Copyright 2001-2013 Microsoft Corp. 

Volume path: \\?\Volume{66c6160d-60cc-11e3-824b-806e6f6e6963}\ 
    Volume name: \\?\Volume{66c6160d-60cc-11e3-824b-806e6f6e6963}\ 
Volume path: D:\ 
    Volume name: \\?\Volume{66c6160f-60cc-11e3-824b-806e6f6e6963}\ 
Volume path: C:\ 
    Volume name: \\?\Volume{66c6160e-60cc-11e3-824b-806e6f6e6963}\ 

を実行します
fsutil volume diskfree 

与える:はい、私はそのことを正確にクリーンな方法を知っているが、それは次のとおりです。

C:\Users\MC>fsutil volume diskfree \\?\Volume{66c6160e-60cc-11e3-824b-806e6f6e6963}\ 
Total # of free bytes  : 47826694144 
Total # of bytes    : 255691059200 
Total # of avail free bytes : 47826694144 

をシェルプロセスの出力を読み取るには、標準出力

string output = proc.StandardOutput.ReadToEnd(); 

免責事項を読むことができます方法。私はこのような低レベルの情報にアクセスするためのAPIを知らないので。

+1

こんにちは、私はその後VDSが実際に正しい番号を返すことがわかった答えのためにありがとう。 「丸められた」数字は実際には正しい数字です。だからあなたはきれいなやり方で心配する必要はありません。あなたの例でも、数値は4096の倍数です(または正確にはAllocationUnitSize)。しかし答えですから、私はあなたの答えを受け入れます。とにかく人々はコメントを読むことができます。 – SmartK8

関連する問題