上面是官方给出的资料。
需要注意的几点:
1.
首先是这两个宏定义必须先置位
2.设置快速读写,不能再扩展文件大小
3.具体设置
当file对象中的成员cltbl不是NULL时,可以启用快速查找函数。在使用快速查找函数之前,必须在DWORD数组中创建CLMT。要创建CLMT,将DWORD数组的地址设置为open file对象中的成员cltbl,将数组的大小设置为第一项,并使用ofs = CREATE_LINKMAP调用f_lseek函数。在创建了函数和CLMT之后,在接下来的f_read、f_write、f_lseek函数中没有FAT access。使用或需要的项的数量将返回到数组的第一项。要使用的项的数量是(文件片段的数量+ 1)* 2。例如,当文件在5中分割时,将使用数组中的12个条目。如果函数以FR_NOT_ENOUGH_CORE失败,那么给定的数组大小对该文件来说是不够的。
4.具体使用
/* Using fast seek function */
DWORD clmt[SZ_TBL]; /* Cluster link map table buffer */
res = f_open(fp, fname, FA_READ | FA_WRITE); /* Open a file */
res = f_lseek(fp, ofs1); /* This is normal seek (cltbl is nulled on file open) */
fp->cltbl = clmt; /* Enable fast seek function (cltbl != NULL) */
clmt[0] = SZ_TBL; /* Set table size */
res = f_lseek(fp, CREATE_LINKMAP); /* Create CLMT */
...
res = f_lseek(fp, ofs2); /* This is fast seek */