f_getfree

論理ドライブ上の未使用クラスタ数を得ます。

FRESULT f_getfree (
  const char* Path,        /* 対象ドライブのルート・ディレクトリ */
  DWORD* Clusters,         /* 空きクラスタ数を格納する変数へのポインタ */
  FATFS** FileSystemObject /* ファイル・システム・オブジェクトを指すポインタへのポインタ */
);

引数

Path
対象の論理ドライブのルートディレクトリのパス名が入った'\0'で終わる文字列へのポインタを指定します。
Clusters
空きクラスタ数を格納するDWORD変数へのポインタを指定します。
FileSystemObject
対象ドライブのファイル・システム・オブジェクトを指すポインタが返されます。

戻り値

FR_OK (0)
正常終了。*Clustersに空きクラスタ数が返されます。
FR_INVALID_DRIVE
ドライブ番号が不正。
FR_NOT_READY
メディアがセットされていないなど、ディスクドライブが動作不能状態。
FR_DISK_ERR
ディスク・エラーによる失敗。
FR_INT_ERR
不正なFAT構造または内部エラーによる失敗。
FR_NOT_ENABLED
その論理ドライブにワーク・エリアが与えられていない。
FR_NO_FILESYSTEM
ディスク上に有効なFATパーテーションが見つからない。

解説

論理ドライブ上の空きクラスタ数を取得します。返されたファイル・システム・オブジェクトのcsizeメンバがクラスタあたりのセクタ数を示しているので、これを元に実際の空きサイズが計算できます。FAT32ボリュームにおいては、FSINFOの状態によっては不正確な値を返したり、処理に時間がかかったりする可能性があります。

リードオンリー構成および_FS_MINIMIZE >= 1ではこの関数はサポートされません。

使用例

    FATFS *fs;
    DWORD clust;


    // Get free clusters
    res = f_getfree("", &clust, &fs);
    if (res) die(res);

    // Get free space
    printf("%lu KB total disk space.\n"
           "%lu KB available on the disk.\n",
           (DWORD)(fs->max_clust - 2) * fs->csize / 2,
           clust * fs->csize / 2);

参照

FATFS

戻る