

FSResult FS_ARCHIVE_PROC_FUNC(FSFile *p_file, FSCommandType command /*
= FS_COMMAND_WRITEFILE */);
アーカイブコマンド FS_COMMAND_WRITEFILE の動作仕様を以下に示します。
p_file に格納された変数 arg.readfile をコマンド引数とします。
この変数は nitro/fs/file.h にて以下のように定義されています。
typedef struct
{
const void *src;
u32 len_org;
u32 len;
} FSWriteFileInfo;
引数の内容は以下のとおりです。
| 引数 | 内容 |
| src | ファイルへ書き込むデータが格納された転送元のメモリアドレスを示します。 |
| len_org | データを書き込むバイトサイズを、指定されたそのままの値で示します。 |
| len | データを書き込むバイトサイズを、コマンド呼び出し時のファイルサイズにて補正した値で示します。 |
p_file は常に、prop.file にファイル情報を格納したハンドルです。 p_file の変数 prop.file に基づいて以下のように設定します。 ・prop.file.pos で示されるアーカイブオフセット位置へ、 src のメモリが指す len バイト分のデータを転送します。 その後、prop.file.pos を len だけ加算します。 len の値は実際に指定された値から prop,file.bottom を考慮して補正されています。 ファイルサイズを超えて書き込む際に特別な処理を実行したい場合は、 引数 len_org に格納されている本来の値を使用することができます。
prop.file.pos で示されるベースオフセット位置へアーカイブのライトコールバック関数を用いて src から len バイト分を転送します。
その後、prop.file.pos を len だけ加算します。
FS_RESULT_SUCCESS を返した場合、転送処理は len バイト分正しく完了したと判断されます。 それ以外を返した場合、何らかのエラーにより転送が失敗したと判断されます。
FS_WriteFile
FS_WriteFileAsync
FSArchive
FS_ARCHIVE_PROC_FUNC
FS_COMMAND_*
FS_SetArchiveProc
2004/07/12 初版