FIL構造体は、f_open関数で作成され、そのファイルの状態を保持します。また、f_close関数でファイルが閉じられると無効化されます。アプリケーションからの書き換えが可能なメンバはcltblのみです。非タイニー構成では内部にセクタ・バッファが確保されるので、サイズに注意が必要です。
typedef struct {
FATFS* fs; /* 親ファイル・システム・オブジェクトへのポインタ */
WORD id; /* 親ファイル・システム・オブジェクトのマウントID */
BYTE flag; /* ファイル・ステータス・フラグ */
BYTE pad1;
DWORD fptr; /* ファイル読み書きポインタ(ファイル先頭からのバイト・オフセット) */
DWORD fsize; /* ファイル・サイズ(バイト単位) */
DWORD org_clust; /* ファイル開始クラスタ番号 (0: fsize==0) */
DWORD curr_clust; /* 現在のクラスタ */
DWORD dsect; /* 現在のデータ・セクタ */
#if _FS_READONLY == 0
DWORD dir_sect; /* このファイルのディレクトリ・エントリのあるセクタ */
BYTE* dir_ptr; /* このファイルのディレクトリへのポインタ */
#endif
#if _USE_FASTSEEK
DWORD* cltbl; /* ファイルのクラスタ・リンク情報へのポインタ */
#endif
#if _FS_SHARE
UINT lockid; /* ファイル・ロックID */
#endif
#if !_FS_TINY
BYTE buf[_MAX_SS]; /* データ転送バッファ */
#endif
} FIL;