# ファイル関数の戻り値

FatFsのAPIでは、一部の関数を除き結果に応じた共通のリザルト・コード(FRESULT型(enum))を返します。関数が成功した場合は0を返します。失敗した場合は0以外の値を返し、値はエラーの種類を示します。

FR_OK (0)
  関数は成功した。
FR_DISK_ERR
  下位レイヤ(`disk_read(), disk_write(), disk_ioctl()`関数)で回復不能なエラーが発生した。
  ※開かれたファイルの操作においてこのエラーが発生すると、そのファイル・オブジェクトはアボート状態となり、クローズ以外のの操作ができなくなります。
FR_INT_ERR
  内部処理の健全性に異常が検出された。原因としては次のようなことが考えられます。
  - ボリューム上のFAT構造にエラーがある。
  - スタック不足や不正なメモリ操作等によるワーク・エリアの破壊。多くはこれが原因。
  ※開かれたファイルの操作においてこのエラーが発生すると、そのファイル・オブジェクトはアボート状態となり、クローズ以外の操作ができなくなります。
FR_NOT_READY
  物理ドライブが動作可能な状態にない。または、ドライブの初期化に失敗した。
FR_NO_FILE
  指定されたファイルが見つからなかった。
FR_NO_PATH
  指定されたパスが見つからなかった。
FR_INVALID_NAME
  指定された文字列がパス名のフォーマットとして無効。
FR_DENIED
  そのオブジェクトに対する操作の拒否。原因としては次のようなことが考えられます。
  - 書き込み禁止属性(`AM_RDO`)を持つファイルを書き込みモードで開こうとした。
  - 書き込み禁止属性を持つファイルやディレクトリを削除しようとした。
  - 空でないディレクトリまたはカレント・ディレクトリを削除しようとした。
  - `FA_READ`フラグを付けずに開いたファイルに対して読み出しを行った。
  - `FA_WRITE`フラグを付けずに開いたファイルに対して書き込みまたはそれに類する操作を行った。
  - ボリュームまたはディレクトリ・テーブルが満杯でファイルやディレクトリを作成できなかった。
FR_EXIST
  新しく作成しようとしたオブジェクトと同じ名前のオブジェクトが既に存在する。
FR_INVALID_OBJECT
  指定されたファイル・オブジェクトやディレクトリ・オブジェクトが無効(オープンされていない、既に閉じられた、破損しているなど)、またはヌル・ポインタが渡された。また、開かれたままのオブジェクトは、それの属するボリュームのマウント動作により無効となります。
FR_WRITE_PROTECTED
  物理ドライブが書き込み禁止状態のとき、書き込みを伴う操作を行おうとした。
FR_INVALID_DRIVE
  パス名中に指定されたドライブ番号が無効、またはパス名にヌル・ポインタが渡された。(関連オプション: `_VOLUMES`)
FR_NOT_ENABLED
  そのボリュームの操作に必要なワーク・エリア(ファイル・システム・オブジェクト構造体)が与えられていない。
FR_NO_FILESYSTEM
  物理ドライブ上に有効なFATボリュームが見つからなかった。
FR_MKFS_ABORTED
  `f_mkfs()`の処理が開始前に中断された。原因としては次のようなことが考えられます。
  - ボリュームが小さすぎる。
  - FATタイプの計算に矛盾が見つかった。クラスタ数がFATタイプの境界付近になるときに発生する場合があります。
  - その論理ドライブに対応する区画が見つからなかった。(関連オプション: `_MULTI_PARTITION`)
FR_TIMEOUT
  再入制御による待ち時間が定義された時間を越えたため、関数は実行されなかった。(関連オプション: `_TIMEOUT`)
FR_LOCKED
  多重アクセス排他機能により、そのファイルやディレクトリに対して行おうとしたアクセスが拒否された。(関連オプション: `_FS_LOCK`)
FR_NOT_ENOUGH_CORE
  メモリ不足による失敗。原因としては次のようなことが考えられます。
  - LFN操作バッファの動的確保に失敗した。(関連オプション: `_USE_LFN`)
  - 与えられた配列のサイズが実際に必要なサイズに対して不足している。
FR_TOO_MANY_OPEN_FILES
  同時オープン可能なファイル数を越えてファイルを開こうとした。(関連オプション: `_FS_LOCK`)
FR_INVALID_PARAMETER
  与えられたパラメータが無効または矛盾している。