論理ドライブ上の未使用クラスタ数を得ます。
FRESULT f_getfree ( const TCHAR* Path, /* 対象ドライブを指定します */ DWORD* Clusters, /* 空きクラスタ数を格納する変数へのポインタ */ FATFS** FileSystemObject /* ファイル・システム・オブジェクトを指すポインタへのポインタ */ );
論理ドライブ上の空きクラスタ数を取得します。返されたファイル・システム・オブジェクトのcsizeメンバがクラスタあたりのセクタ数を示しているので、これを元に実際の空きサイズが計算できます。FAT32ボリュームにおいては、FSINFOセクタの状態によっては不正確な値を返したり、処理に時間がかかったりする可能性があります。
_FS_READONLY == 0で、且つ_FS_MINIMIZE == 0のとき使用可能です。
FATFS *fs;
DWORD fre_clust, fre_sect, tot_sect;
/* ドライブ1のボリューム情報と空きクラスタ数を得る */
res = f_getfree("1:", &fre_clust, &fs);
if (res) die(res);
/* 全セクタ数と空きセクタ数を計算 */
tot_sect = (fs->max_clust - 2) * fs->csize;
fre_sect = fre_clust * fs->csize;
/* ドライブサイズと空きサイズの表示 (512バイト/セクタと仮定) */
printf("%lu KB total drive space.\n"
"%lu KB available.\n",
fre_sect / 2, tot_sect / 2);