FIL構造体(ファイル オブジェクト)は、f_open関数で初期化され、以後そのファイルの状態を保持します。また、f_close関数でファイルが閉じられると無効化されます。アプリケーションは、この構造体のメンバを書き換えてはなりません(cltblは例外)。非タイニー構成(_FS_TINY == 0)では、内部に_MAX_SSバイトのセクタ バッファが確保されるので、そのサイズには注意が必要です。
typedef struct { FATFS* fs; /* 親ファイル システム オブジェクトへのポインタ */ WORD id; /* 親ファイル システム オブジェクトのマウントID */ BYTE flag; /* ファイル ステータス フラグ */ BYTE err; /* エラー中断フラグ */ DWORD fptr; /* ファイル読み書きポインタ (ファイル先頭からのバイト オフセット) */ DWORD fsize; /* ファイル サイズ(バイト単位) */ DWORD sclust; /* ファイル開始クラスタ番号 (0:割り当て無し) */ DWORD clust; /* 現在のクラスタ (fptrが0のときは無効、fptrがクラスタ境界上のときは前のクラスタ) */ 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]; /* ファイル プライベート データ転送バッファ (fptrがセクタ境界上にない時は常に有効だが、fptrがセクタ境界上のときは無効な場合がある) */ #endif } FIL;