Библиотека FatFS: f_getfree Печать
Добавил(а) microsin   

f_getfree

Функция f_getfree получает количество свободных кластеров.

FRESULT f_getfree (
  const TCHAR* Path,        /* Логический номер драйва (диска) */
  DWORD* Clusters,          /* Указатель на переменную для сохранения количества свободных кластеров */
  FATFS** FileSystemObject  /* Указатель на объект файловой системы */
);

Параметры

Path
Указатель на null-terminated (оканчивающуюся нулем) строку, которая задает нужный логический диск (logical drive).
Clusters
Указатель на переменную типа DWORD для сохранения в ней количества свободных кластеров на диске.
FileSystemObject
Указатель на указатель, который хранит указатель на соответствующий объект файловой системы.

Возвращаемые значения

FR_OKFR_DISK_ERRFR_INT_ERRFR_NOT_READYFR_INVALID_DRIVEFR_NOT_ENABLEDFR_NO_FILESYSTEMFR_TIMEOUT

Описание

Функция f_getfree получает количество свободных кластеров на диске. Поле csize в объекте файловой системы отражает количество секторов в кластере, поэтому свободное пространство в секторах может быть вычислено перемножением csize на переменную Clusters. Когда структура FSInfo на томе FAT32 находится не в синхронизации с кэшем, эта функция может вернуть некорректное количество свободных кластеров.

Краткая информация (QuickInfo)

Функция доступна, когда _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->n_fatent - 2) * fs->csize;
    fre_sect = fre_clust * fs->csize;
    /* Вывод на печать свободного места в килобайтах (предполагается, что в секторе 512 байт) */
    printf("%lu KB total drive space.\n"
           "%lu KB available.\n",
           tot_sect/2, fre_sect/2);

См. также

FATFS

[Ссылки]

1. f_getfree - получение количества свободных секторов (оригинал статьи на английском языке).