# ファイル関数の戻り値

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

FR_OK (0)
  関数は成功した。
FR_DISK_ERR
  下位レイヤ(`disk_read/disk_write/disk_ioctl`関数)で回復不能なエラーが発生した。
  ※開かれたファイルの操作においてこのエラーが発生すると、そのファイル オブジェクトはアボート状態となり、クローズ以外の操作ができなくなります。
FR_INT_ERR
  内部処理の健全性チェックで何らかの異常が検出された。原因としては次のようなことが考えられます。
  - スタック不足や不正なメモリ操作等によるワーク エリアの破壊。多くはこれが原因。
  - ボリューム上のFAT構造にエラーがある。
  - FatFsモジュール自体のバグ。
  ※開かれたファイルの操作においてこのエラーが発生すると、そのファイル オブジェクトはアボート状態となり、クローズ以外の操作ができなくなります。
FR_NOT_READY
  下位レイヤ(`disk_initialize`関数)の失敗。次のような理由が考えられる。
  - ドライブにメディアがセットされていない。
  - 下位レイヤの実装が不完全。
  - 間違ったハードウェア構成。
  - ストレージ デバイスの故障。
FR_NO_FILE
  指定されたファイルが見つからなかった。
FR_NO_PATH
  指定されたパスが見つからなかった。
FR_INVALID_NAME
  指定された文字列がパス名のフォーマットとして無効。
FR_DENIED
  そのオブジェクトに対する操作の拒否。原因としては次のようなことが考えられます。
  - 書き込み禁止属性(`AM_RDO`)を持つファイルを書き込みモードで開こうとした。
  - 書き込み禁止属性を持つオブジェクトを削除しようとした。
  - 空でないディレクトリまたはカレント ディレクトリを削除しようとした。
  - `FA_READ`フラグを付けずに開いたファイルに対して読み出しを行った。
  - `FA_WRITE`フラグを付けずに開いたファイルに対して変更を加えようとした。
  - ボリュームまたは静的ディレクトリ(FAT12/16のルート)が満杯でディレクトリ エントリの新規作成ができなかった。
  - ファイルに割り当てる連続領域が見つからなかった。
FR_EXIST
  新しく作成しようとしたオブジェクトと同じ名前のオブジェクトが既に存在する。
FR_INVALID_OBJECT
  指定されたファイル オブジェクトやディレクトリ オブジェクトが無効、またはヌル ポインタが渡された。無効になる理由は次のことが考えられます。
  - オープンされていない、既に閉じられている、破損しているなど。
  - そのボリュームでマウント動作があり、ボリューム上の開かれたオブジェクトが全て無効化された。
  - 物理ドライブがメディアの取り外し等で動作不可能になっている。
FR_WRITE_PROTECTED
  物理ドライブが書き込み禁止状態のとき、書き込みを伴う操作を行おうとした。
FR_INVALID_DRIVE
  パス名中に指定されたドライブ番号が無効、またはパス名にヌル ポインタが渡された。(関連オプション: `_VOLUMES`)
FR_NOT_ENABLED
  そのボリュームの操作に必要なワーク エリア(ファイル システム オブジェクト構造体)が与えられていない。
FR_NO_FILESYSTEM
  物理ドライブ上に有効なFATボリュームが見つからなかった。
FR_MKFS_ABORTED
  `f_mkfs`関数の処理が開始前に中断された。原因としては次のようなことが考えられます。
  - 指定されたパラメータでのフォーマットが不可能。
  - ボリュームのサイズが小さすぎる。
  - 与えられたワークエリアが小さすぎる。
  - その論理ドライブに対応する区画が見つからなかった。(関連オプション: `_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
  与えられたパラメータが無効または矛盾している。

戻る