FatFs文件系统:f_getfree
获取空闲簇的数目。
FRESULT f_getfree ( const XCHAR* Path, /* 驱动器的根目录 */ DWORD* Clusters, /* 存储空闲簇数目变量的指针 */ FATFS** FileSystemObject /* 文件系统对象指针的指针 */ );
参数:
Path'\0'结尾的字符串指针,该字符串指定了逻辑驱动器的目录。
Clusters 存储空闲簇数目的 DWORD 变量的指针。
FileSystemObject 相应文件系统对象指针的指针。
返回值:
FR_OK (0)函数成功。
*Clusters 表示空闲簇的数目,并且*FileSystemObject 指向文件系统对象。
FR_INVALID_DRIVE 驱动器号无效。
FR_NOT_READY 由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_DISK_ERR 由于底层磁盘 I/O 函数中的错误,而导致该函数失败。
FR_INT_ERR 由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。
FR_NOT_ENABLED 逻辑驱动器没有工作区。
FR_NO_FILESYSTEM 磁盘上没有有效的 FAT 卷。
描述:
f_getfree 函数当_FS_READONLY == 0 并且_FS_MINIMIZE == 0 时有效。 f_getfree 函数获取驱动器上空闲簇的数目。文件系统对象中的成员 csize 是每簇中的扇区数,因此,以 扇区为单位的空闲空间可以被计算出来。当 FAT32 卷上的 FSInfo 结构不同步时,该函数返回一个错误的空 闲簇计数。
示例:
FATFS *fs; DWORD fre_clust, fre_sect, tot_sect; /* Get drive information and free clusters */ res = f_getfree("/", &fre_clust, &fs); if (res) die(res); /* Get total sectors and free sectors */ tot_sect = (fs->max_clust - 2) * fs->csize; fre_sect = fre_clust * fs->csize; /* Print free space in unit of KB (assuming 512B/sector) */ printf("%lu KB total drive space.\n%lu KB available.\n", fre_sect / 2, tot_sect / 2);