f_getfree

The f_getfree function gets number of the free clusters.

FRESULT f_getfree (
  const TCHAR* Path,        /* Logical drive number */
  DWORD* Clusters,          /* Pointer to the variable to store number of free clusters */
  FATFS** FileSystemObject  /* Pointer to pointer to file system object */
);

Parameters

Path
Pinter to the null-terminated string that specifies the logical drive.
Clusters
Pointer to the DWORD variable to store number of free clusters.
FileSystemObject
Pointer to pointer that to store a pointer to the corresponding file system object.

Return Values

FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT

Descriptions

The f_getfree function gets number of free clusters on the drive. The member csize in the file system object is refrecting number of sectors per cluster, so that the free space in unit of sector can be calcurated with this. When FSInfo structure on FAT32 volume is not in sync, this function can return an incorrect free cluster count.

QuickInfo

Available when _FS_READONLY == 0 and _FS_MINIMIZE == 0.

Example

    FATFS *fs;
    DWORD fre_clust, fre_sect, tot_sect;


    /* Get volume information and free clusters of drive 1 */
    res = f_getfree("1:", &fre_clust, &fs);
    if (res) die(res);

    /* Get total sectors and free sectors */
    tot_sect = (fs->n_fatent - 2) * fs->csize;
    fre_sect = fre_clust * fs->csize;

    /* Print free space in unit of KB (assuming 512 bytes/sector) */
    printf("%lu KB total drive space.\n"
           "%lu KB available.\n",
           fre_sect / 2, tot_sect / 2);

See Also

FATFS

Return