# FS_COMMAND_OPENFILEFAST

## 定義

  `FSResult FS_ARCHIVE_PROC_FUNC(FSFile *p_file, FSCommandType command /* = FS_COMMAND_OPENFILEFAST */);
  `

## 説明

アーカイブコマンド `FS_COMMAND_OPENFILEFAST の動作仕様を以下に示します`。

このコマンドに渡される引数

>     p_file に格納された変数 arg.openfilefast をコマンド引数とします。
>     この変数は nitro/fs/file.h にて以下のように定義されています。

>     typedef struct
>     {
>         FSFileID id;
>     } FSOpenFileFastInfo;

> 引数の内容は以下のとおりです。

引数 | 内容
id | 開くべきファイルのIDです。 この値は、FS_COMMAND_READDIR コマンドが生成します。

このコマンドに要求される動作

>     p_file の変数 prop.file を以下のように設定します。

>     ・引数の id が格納しているファイルIDに基づいて prop.file の各変数を適切に設定します。
>       設定した値は、以降の FS_COMMAND_READFILE コマンドおよび FS_COMMAND_WRITEFILE コマンドで使用されます。
>       これらのコマンドに対して正当な引数になるのであれば、prop.file の各変数の意味については独自に取り決めて構いません。
>       ただし、prop.file.pos については prop.file.top から prop.file.bottom の範囲におさまっている必要があります。

デフォルトの実装

> 以下の取り決めに基づいて値を設定します。

prop.file.top | 指定のファイルインデックスが指すFAT情報から取得した、領域先頭位置 ( NitroROMフォーマットに準拠 )
prop.file.bottom | 指定のファイルインデックスが指すFAT情報から取得した、領域終端位置 ( NitroROMフォーマットに準拠 )
prop.file.pos | prop.file.top と同じ値を設定
prop.file.own_id | 引数 id をそのまま設定

> これらの情報はアーカイブのFATがNitroROMフォーマットに準拠していることを前提にして、
> id.file_id で示されるFATインデックスからアーカイブのリードコールバック関数を用いて取得します。
> また、設定自体は FS_COMMAND_OPENFILEDIRECT コマンドを使用して行われます。

コマンドの結果

>     FS_RESULT_SUCCESS を返した場合、p_file はファイル情報を格納したハンドルになり、
>     以降は FS_IsFile 関数で TRUE を返すようになります。
>     また、ファイルを操作する関数の引数に使われるようになります。

このコマンドが使用される関数

> FS_OpenFile
> FS_OpenFileFast

## 参照

`FSArchive FS_ARCHIVE_PROC_FUNC FS_COMMAND_*
FS_SetArchiveProc`

## 履歴

2004/07/12 初版