• ベストアンサー

ディスクの空き容量を得たい2

下で質問したのですが、画像が貼れなかったので もうひとつトピックを立てましたすいません %d から %llu に変更したところ 無事値は表示されましたが h1.QuadPart の値ではなく h1.LowPart の値が表示されました #include <windows.h> #include <stdio.h> void main() { ULARGE_INTEGER h1; ULARGE_INTEGER h2; ULARGE_INTEGER h3; GetDiskFreeSpaceEx( NULL, &h1, &h2, &h3 ); printf( "h1.QuadPart: %llu\n", h1.QuadPart ); LONGLONG i = h1.QuadPart; printf( "%llu\n", i ); } また、LONGLONG i に 代入して再表示しても やはり h1.QuadPart の値ではなく h1.LowPart の値が代入されていました これはいったいどういうことでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

お使いのコンパイラーは何ですか? また、 >h1.QuadPart の値ではなく >h1.LowPart の値が表示されました と書かれているということは、 h1.QuadPart の値とh1.LowPart の値を何らかの方法を使ってご存じである、ということですね。 その、何らかの方法というのを教えていただけますか? ちなみに、私のところ(Borland C++ 5.82)で当該のプログラムを実行したところ h1.QuadPart: 90910289920 90910289920 という結果を得ました。また、dir コマンドの実行結果の最終行で、 2 個のディレクトリ 90,910,289,920 バイトの空き領域 という結果を得ました。 これらの数値が一致しているのは、ご自身の想定と同じでしょうか。

dic2008
質問者

お礼

解答ありがとうございます 使用しているコンパイラはVisualC++6.0で、OSはXP Home Editionです 確認の方法ですが、上の画像で赤で囲ってありますが デバック機能のブレークポイントにて h1の変数の中身を見ました (画質が荒いので見えにくいですが・・・) dir コマンドでは 16,929,587,776 バイトの空きとでました デバックで一時的に止め h1 変数の中身を確認したところ h1.QuadPart = 16,929,587,776 h1.LowPart = 4,043,837,440 とでました この状態で LONGLONG i = h1.QuadPart としたところ i には 16,929,587,776 が代入されましたが (ブレークポイントにて一時的に止め確認) printf にて表示を行うと 4,043,837,440 とでるのです そこがよくわからないのです

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

 画像が見ずら過ぎたので(駄目だこりゃ)、補足します。 ・左  VC60  3759531520 ・中央  VC2005  8054498816 ・右  ハードディスク空  8054498816  です。

すると、全ての回答が全文表示されます。
回答No.2

 こんばんは。  VC6.0では無理なのでは?

dic2008
質問者

お礼

VisualC++ 2008 Express にしたところ 無事表示されました ありがとうございました

すると、全ての回答が全文表示されます。

関連するQ&A