## FIL

`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 on fsize==0) */
        DWORD   curr_clust;   /* 現在のクラスタ */
        DWORD   dsect;        /* 現在のデータ・セクタ */
    #if _FS_READONLY == 0
        DWORD   dir_sect;     /* このファイルのディレクトリ・エントリのあるセクタ */
        BYTE*   dir_ptr;      /* このファイルのディレクトリへのポインタ */
    #endif
    #if _USE_FASTSEEK
        DWORD*  cltbl;        /* ファイルのクラスタ・リンク情報へのポインタ (Nulled on file open) */
    #endif
    #if _FS_SHARE
        UINT    lockid;       /* ファイル・ロックID */
    #endif
    #if !_FS_TINY
        BYTE    buf[_MAX_SS]; /* データ転送バッファ */
    #endif
    } FIL;

戻る