f_getfree
Функция f_getfree получает количество свободных кластеров.
FRESULT f_getfree (
const TCHAR* Path, /* Логический номер драйва (диска) */
DWORD* Clusters, /* Указатель на переменную для сохранения количества свободных кластеров */
FATFS** FileSystemObject /* Указатель на объект файловой системы */
);
Параметры
- Path
- Указатель на null-terminated (оканчивающуюся нулем) строку, которая задает нужный логический диск (logical drive).
- Clusters
- Указатель на переменную типа DWORD для сохранения в ней количества свободных кластеров на диске.
- FileSystemObject
- Указатель на указатель, который хранит указатель на соответствующий объект файловой системы.
Возвращаемые значения
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_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 - получение количества свободных секторов (оригинал статьи на английском языке). |