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