ファイル関数の戻り値
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
- 与えられたパラメータが無効または矛盾している。