# FSCommandType

## 定義

  `#include <nitro/fs.h>`
  `

      typedef	enum {
      	FS_COMMAND_ASYNC_BEGIN = 0,
      	FS_COMMAND_READFILE = FS_COMMAND_ASYNC_BEGIN,
      	FS_COMMAND_WRITEFILE,
      	FS_COMMAND_ASYNC_END,

      	FS_COMMAND_SYNC_BEGIN = FS_COMMAND_ASYNC_END,
      	FS_COMMAND_SEEKDIR = FS_COMMAND_SYNC_BEGIN,
      	FS_COMMAND_READDIR,
      	FS_COMMAND_FINDPATH,
      	FS_COMMAND_GETPATH,
      	FS_COMMAND_OPENFILEFAST,
      	FS_COMMAND_OPENFILEDIRECT,
      	FS_COMMAND_CLOSEFILE,
      	FS_COMMAND_SYNC_END,

      	FS_COMMAND_STATUS_BEGIN = FS_COMMAND_SYNC_END,
      	FS_COMMAND_ACTIVATE = FS_COMMAND_STATUS_BEGIN,
      	FS_COMMAND_IDLE,
      	FS_COMMAND_STATUS_END,

      	FS_COMMAND_INVALID

      } FSCommandType;

  `

## 説明

アーカイブに対してファイルシステムが送るコマンドを表現する列挙型です。
以下のように定義されます。

FS_COMMAND_STATUS_BEGIN | アーカイブ状態の変更に関するメッセージコマンドIDの先頭を表します。
FS_COMMAND_STATUS_END | アーカイブ状態の変更に関するメッセージコマンドIDの終端 + 1 を表します。
以下は、FS_COMMAND_STATUS_BEGIN 〜 FS_COMMAND_STATUS_END に含まれるメッセージです。
| FS_COMMAND_ACTIVATE | アイドル状態のアーカイブが最初の処理を始める前に発生します。
FS_COMMAND_IDLE | アーカイブが最後の処理を終えアイドル状態になった後に発生します。
FS_COMMAND_SYNC_BEGIN | 同期系コマンドIDの先頭を表します。
FS_COMMAND_SYNC_END | 同期系コマンドIDの終端 + 1 を表します。
以下は、FS_COMMAND_SYNC_BEGIN 〜 FS_COMMAND_SYNC_END に含まれるメッセージです。
| FS_COMMAND_SEEKDIR | ディレクトリ位置を検索する必要のある関数からのコマンドとして発生します。
FS_COMMAND_READDIR | ディレクトリエントリを読み出す必要のある関数からのコマンドとして発生します。
FS_COMMAND_OPENFILEDIRECT | 領域の直接指定によってファイルを開く必要のある関数からのコマンドとして発生します。
FS_COMMAND_OPENFILEFAST | ファイルIDによってファイルを開く必要のある関数からのコマンドとして発生します。
FS_COMMAND_CLOSEFILE | ファイルを閉じる必要のある関数からのコマンドとして発生します。
FS_COMMAND_FINDPATH | パス名でファイルやディレクトリを特定する関数からのコマンドとして発生します。
FS_COMMAND_GETPATH | フルパス名またはその長さを必要とする関数からのコマンドとして発生します。
FS_COMMAND_ASYNC_BEGIN | 非同期系コマンドIDの先頭を表します。
FS_COMMAND_ASYNC_END | 非同期系コマンドIDの終端 + 1 を表します。
以下は、FS_COMMAND_ASYNC_BEGIN 〜 FS_COMMAND_ASYNC_END に含まれるメッセージです。
| FS_COMMAND_READFILE | ファイルへのリードアクセスを行う必要のある関数からのコマンドとして発生します。
FS_COMMAND_WRITEFILE | ファイルへのライトアクセスを行う必要のある関数からのコマンドとして発生します。
FS_COMMAND_INVALID | 不正なコマンドを表す内部定数として用意されています。

非同期コマンドは、単にアーカイブのコールバック関数を1回呼び出すことで完了するコマンドです。
同期コマンドは、コールバック関数の呼び出しに加えて何らかの処理を行う必要があるコマンドです。
デフォルトの実装における同期コマンドには依存関係があり、一部のコマンドは内部で下位コマンドを使用します。
コマンド間の依存関係はおおむね以下のとおりです。

No. | コマンド | 使用するコマンドおよびアーカイブ情報
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
1 | ( FS_ARCHIVE_READ_FUNC ) |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
2 | ( FS_ARCHIVE_WRITE_FUNC ) |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
3 | ( FAT 情報 ) |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
4 | ( FNT 情報 ) |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
5 | FS_COMMAND_ACTIVATE |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
6 | FS_COMMAND_IDLE |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
7 | FS_COMMAND_SEEKDIR | Yes |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
8 | FS_COMMAND_READDIR | Yes |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
9 | FS_COMMAND_OPENFILEDIRECT |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
10 | FS_COMMAND_OPENFILEFAST | Yes |  | Yes |  |  |  |  |  | Yes |  |  |  |  |  |
11 | FS_COMMAND_CLOSEFILE |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
12 | FS_COMMAND_FINDPATH |  |  |  |  |  |  | Yes | Yes |  |  |  |  |  |  |
13 | FS_COMMAND_GETPATH |  |  |  |  |  |  | Yes | Yes |  |  |  |  |  |  |
14 | FS_COMMAND_READFILE | Yes |  |  |  |  |  |  |  |  |  |  |  |  |  |
15 | FS_COMMAND_WRITEFILE |  | Yes |  |  |  |  |  |  |  |  |  |  |  |  |

## 参照

`FSArchive FS_ARCHIVE_PROC_FUNC
FS_SetArchiveProc`

## 履歴

2009/04/10 表中で使用する記号を標準的な表記に置き換え。
2004/07/12 コマンドに関する記述全体を修正
2004/06/30 初版