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