

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