プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

ディスク容量の取得(2)

2007年09月24日 01時47分58秒 | ディスク関連

2Gバイト以上のディスク容量を取得するには GetDiskFreeSpaceEx 関数を使います。
ディスク容量の求め方は次のようになります。(戻る)

  1. 全容量と空き容量より使用容量を求める。
  2. ディスクの使用容量は使用容量を表示する。
  3. ディスクの空き容量は空き容量を表示する。
  4. ディスクの全体容量は全体容量を表示する。

なお、使用容量の計算は 64 ビット整数を使います。

プロトタイプ宣言

BOOL GetDiskFreeSpaceEx(
    LPCTSTR             lpDirectoryName,            // ルートパスの文字列
    PULARGE_INTEGER     lpFreeBytesAvailable,       // 呼び出し側が利用できるバイト数
    PULARGE_INTEGER     lpTotalNumberOfBytes,       // ディスク全体のバイト数
    PULARGE_INTEGER     lpTotalNumberOfFreeBytes    // ディスク全体の空きバイト数
);

共用体

typedef struct union {
    struct {
        DWORD   LowPart;
        DWORD   HighPart;
    };
    ULONGLONG   QuadPart;
} ULARGE_INTEGER, *PULARGE_INTEGER;

サンプル

#include <stdio.h>
#include <string.h>
#include <windows.h>

// メイン関数
int main( void )
{
    TCHAR           szRoot[ 16 ];
    ULARGE_INTEGER  i64Used;
    ULARGE_INTEGER  i64Free;
    ULARGE_INTEGER  i64Avail;
    ULARGE_INTEGER  i64Total;
    
    // ドライブの設定
    strcpy( szRoot, TEXT("C:\\") );
    // ディスク情報の取得
    GetDiskFreeSpaceEx( szRoot, &i64Free, &i64Total, &i64Avail );
    // 結果表示
    i64Used.QuadPart = (i64Total.QuadPart - i64Avail.QuadPart);
    printf( TEXT("GetDiskFreeSpaceEx()関数のテスト\n") );
    printf( TEXT("\n") );
    printf( TEXT("ドライブ名:%s\n"), szRoot );
    printf( TEXT("\n") );
    printf( TEXT("ディスクの使用容量:%12I64u バイト\n"), i64Used.QuadPart );
    printf( TEXT("ディスクの空き容量:%12I64u バイト\n"), i64Avail.QuadPart );
    printf( TEXT("ディスクの全体容量:%12I64u バイト\n"), i64Total.QuadPart );
    return 0;
}
  • この関数は2Gバイトより大きいディスクに対しても正しく取得できます。
  • Windows 95 のバージョンによっては利用できない場合があります。
  • また64ビット整数は ULARGE_INTEGER という共用体を使います。

実行結果

GetDiskFreeSpaceEx()関数のテスト

ドライブ名:C:\

ディスクの使用容量: 51576684544 バイト
ディスクの空き容量: 38422589440 バイト
ディスクの全体容量: 89999273984 バイト

関連記事



コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ディスク容量の取得(1) | トップ | ドライブの種類を調べる »
最新の画像もっと見る

コメントを投稿

ディスク関連」カテゴリの最新記事