FS_COMMAND_WRITEFILE

定義


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 初版