## FIL

`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;

戻る