fatfs窗口处理相关函数。
#if !FF_FS_READONLY//非只读
//同步窗口
//win中数据脏了,即wflag为1,则将win中数据写入磁盘
static FRESULT sync_window ( /* Returns FR_OK or FR_DISK_ERR */
FATFS* fs /* Filesystem object */
)
{
FRESULT res = FR_OK;
if (fs->wflag) {
//如果win中的数据改变了。/* Is the disk access window dirty? */
//指定物理驱动器,将win中的数据写入到winsect扇区中,写一个扇区长度的数据。
if (disk_write(fs->pdrv, fs->win, fs->winsect, 1) == RES_OK) {
/* Write it back into the volume */
fs->wflag = 0;//写成功,则win中数据脏标志清零,即win中数据和物理磁盘中扇区数据相同。/* Clear window dirty flag */
//winsect:扇区号
//fatbase:fat表的起始扇区号
//fsize:每fat表占用扇区数
if (fs->winsect - fs->fatbase < fs->fsize) {
//如果这写入的是第一个fat表,则根据fat表个数,看是否需要写第二个fat表。 /* Is it in the 1st FAT? */
if (fs-></