The FATFS structure holds dynamic work area of the logical drive and a file. It is given by application program and registerd/unregisterd to the Petit FatFs module with pf_mount function. There is no member that can be changed by application programs.
typedef struct { BYTE fs_type; /* FAT sub type */ BYTE csize; /* Number of sectors per cluster */ BYTE flag; /* File status flags */ BYTE csect; /* File sector address in the cluster */ WORD n_rootdir; /* Number of root directory entries (0 on FAT32) */ BYTE* buf; /* Pointer to the disk access buffer */ CLUST 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 fptr; /* File read/write pointer */ DWORD fsize; /* File size */ CLUST org_clust; /* File start cluster */ CLUST curr_clust; /* File current cluster */ DWORD dsect; /* File current data sector */ } FATFS;