最新版 FatFS f_getfree 详解

作者:fly 发布于:2014-3-21 16:32 分类:嵌入式

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);


发表评论:

 
Powered by emlog sitemap