FATFS

The FATFS structure holds dynamic work area of individual logical drives. It is given by application program and registerd/unregisterd to the FatFs module with f_mount function. Following members are in standard configuration. There is no member that can be changed from the application program.

typedef struct _FATFS {
    BYTE    fs_type;      /* FAT sub type */
    BYTE    drive;        /* Physical drive number */
    BYTE    csize;        /* Number of sectors per cluster */
    BYTE    n_fats;       /* Number of FAT copies */
    BYTE    wflag;        /* win[] dirty flag (1:must be written back) */
    BYTE    pad1;
    WORD    id;           /* File system mount ID */
    WORD    n_rootdir;    /* Number of root directory entries (0 on FAT32) */
#if _FS_REENTRANT
    HANDLE  h_mutex;      /* Handle to the mutex (Platform dependent) */
#endif
#if _MAX_SS != 512
    WORD    s_size;       /* Sector size */
#endif
#if !_FS_READONLY
    BYTE    fsi_flag;     /* fsinfo dirty flag (1:must be written back) */
    BYTE    pad2;
    DWORD   last_clust;   /* Last allocated cluster */
    DWORD   free_clust;   /* Number of free clusters */
    DWORD   fsi_sector;   /* fsinfo sector */
#endif
    DWORD   sects_fat;    /* Sectors per fat */
    DWORD   max_clust;    /* Maximum cluster# + 1. Number of clusters is max_clust - 2 */
    DWORD   fatbase;      /* FAT start sector */
    DWORD   dirbase;      /* Root directory start sector (Cluster# on FAT32) */
    DWORD   database;     /* Data start sector */
    DWORD   winsect;      /* Current sector appearing in the win[] */
    BYTE    win[MAX_SS];  /* Disk access window for Directory/FAT */
} FATFS;

Return