FatFs文件系统:f_getfree

网站作者5个月前FatFs266

获取空闲簇的数目。

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


相关文章

FatFs文件系统:f_lseek

移动一个打开的文件对象的文件读/写指针。也可以被用来扩展文件大小(簇预分配)。FRESULT f_lseek (      FIL* FileObject, /* 文件对象结构指针 */     ...

FatFs文件系统:f_rename

重命名一个对象。FRESULT f_rename (        const XCHAR* OldName, /* 原对象名的指针 */        const XCHAR* NewName ...

FatFs文件系统:f_size

获取一个文件的大小。DWORD f_size (        FIL* FileObject /* File object */   );参数:FileObject——指向打开文件对象结构的指针...

FatFs文件系统:disk_status

获取当前磁盘的状态DSTATUS disk_status (        BYTE Drive /* 物理驱动器号*/   );参数:Drive 指定待确认的物理驱动器号。 返回值:磁盘状态,是...

FatFs文件系统:f_error

测试文件是否出错。int f_error (        FIL* FileObject /* File object */   );参数:FileObject——指向打开文件对象结构的指针。 ...

FatFs文件系统:f_utime

f_utime 函数修改一个文件或目录的时间戳。FRESULT f_utime (        const XCHAR* FileName, /* 文件或目录路径的指针 */        co...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。