CRI ADX  Last Updated: 2026-05-28 14:38 p
cri_le_file_system.h ファイル
#include "cri_le_xpt.h"
#include "cri_le_error.h"

データ構造

struct  CriFsConfigTag
 コンフィギュレーション [詳解]
 
struct  CriFsIoInterfaceTag
 I/Oインターフェイス [詳解]
 
struct  CriFsBinderFileInfoTag
 ファイル情報構造体 [詳解]
 

マクロ定義

#define CRIFS_CONFIG_DEFAULT_THREAD_MODEL   CRIFS_THREAD_MODEL_MULTI
 コンフィギュレーションのデフォルト値
 
#define CRIFS_DEVICE_DEFAULT   (CRIFS_DEVICE_00)
 デフォルトデバイスID
 
#define CRIFS_DEFAULT_DEVICE   (CRIFS_DEVICE_DEFAULT)
 デフォルトデバイスID旧定義 [詳解]
 
#define criFs_SetUserAllocator(p_malloc_func, p_free_func, p_obj)
 ユーザーアロケーターの登録 [詳解]
 
#define criFs_SetDefaultConfig(p_config)
 デフォルトコンフィギュレーションのセット [詳解]
 

型定義

typedef enum CriFsThreadModelTag CriFsThreadModel
 スレッドモデル [詳解]
 
typedef struct CriFsConfigTag CriFsConfig
 コンフィギュレーション [詳解]
 
typedef enum CriFsFileIoModeTag CriFsFileIoMode
 ファイルI/Oモードの設定
 
typedef void *(* CriFsMallocFunc) (void *obj, CriUint32 size)
 メモリ確保関数 [詳解]
 
typedef void(* CriFsFreeFunc) (void *obj, void *mem)
 メモリ解放関数 [詳解]
 
typedef enum CriFsDeviceIdTag CriFsDeviceId
 デバイスID
 
typedef void * CriFsFileHn
 ファイルハンドル
 
typedef struct CriFsIoInterfaceTag CriFsIoInterface
 I/Oインターフェイス
 
typedef CriError(* CriFsSelectIoCbFunc) (const CriChar8 *path, CriFsDeviceId *device_id, CriFsIoInterfacePtr *ioif)
 I/O選択コールバック関数 [詳解]
 
typedef struct CriFsBinderHnObjTag * CriFsBinderHn
 CriFsBinderハンドル [詳解]
 
typedef CriUint32 CriFsBindId
 CriFsBinder ID [詳解]
 
typedef struct CriFsBinderFileInfoTag CriFsBinderFileInfo
 ファイル情報構造体 [詳解]
 
typedef struct CriFsLoaderObjTag * CriFsLoaderHn
 CriFsLoaderハンドル
 

列挙型

enum  CriFsThreadModelTag { CRIFS_THREAD_MODEL_MULTI = 0 , CRIFS_THREAD_MODEL_MULTI_USER_DRIVEN = 3 , CRIFS_THREAD_MODEL_USER_MULTI = 1 , CRIFS_THREAD_MODEL_SINGLE = 2 , CRIFS_THREAD_MODEL_ENUM_BE_SINT32 = 0x7FFFFFFF }
 スレッドモデル [詳解]
 
enum  CriFsFileIoModeTag { CRIFS_FILE_IO_MODE_DEFAULT = 0 , CRIFS_FILE_IO_MODE_SHARE_FILE_HANDLE = 1 , CRIFS_FILE_IO_MODE_OPEN_EVERY_TIME = 2 , CRIFS_FILE_IO_MODE_ENUM_BE_SINT32 = 0x7FFFFFFF }
 ファイルI/Oモードの設定 [詳解]
 
enum  CriFsDeviceIdTag { CRIFS_DEVICE_00 = 0 , CRIFS_DEVICE_01 , CRIFS_DEVICE_02 , CRIFS_DEVICE_03 , CRIFS_DEVICE_04 , CRIFS_DEVICE_05 , CRIFS_DEVICE_06 , CRIFS_DEVICE_07 , CRIFS_DEVICE_MAX , CRIFS_DEVICE_INVALID = -1 , CRIFS_DEVICE_ENUM_BE_SINT32 = 0x7fffffff }
 デバイスID [詳解]
 
enum  CriFsFileMode {
  CRIFS_FILE_MODE_APPEND = 0 , CRIFS_FILE_MODE_CREATE = 1 , CRIFS_FILE_MODE_CREATE_NEW = 2 , CRIFS_FILE_MODE_OPEN = 3 ,
  CRIFS_FILE_MODE_OPEN_OR_CREATE = 4 , CRIFS_FILE_MODE_TRUNCATE = 5 , CRIFS_FILE_MODE_ENUM_BE_SINT32 = 0x7FFFFFFF
}
 ファイルオープンモード [詳解]
 
enum  CriFsFileAccess { CRIFS_FILE_ACCESS_READ = 0 , CRIFS_FILE_ACCESS_WRITE = 1 , CRIFS_FILE_ACCESS_READ_WRITE = 2 , CRIFS_FILE_ACCESS_ENUM_BE_SINT32 = 0x7FFFFFFF }
 ファイルアクセス種別 [詳解]
 
enum  CriFsIoError {
  CRIFS_IO_ERROR_OK = 0 , CRIFS_IO_ERROR_NG = -1 , CRIFS_IO_ERROR_TRY_AGAIN = -2 , CRIFS_IO_ERROR_NG_NO_ENTRY = -11 ,
  CRIFS_IO_ERROR_NG_INVALID_DATA = -12 , CRIFS_IO_ERROR_ENUM_BE_SINT32 = 0x7FFFFFFF
}
 I/Oインターフェイスのエラーコード [詳解]
 
enum  CriFsBinderStatus {
}
 バインダーステータス [詳解]
 
enum  CriFsLoaderPriority {
  CRIFSLOADER_PRIORITY_HIGHEST = 2 , CRIFSLOADER_PRIORITY_ABOVE_NORMAL = 1 , CRIFSLOADER_PRIORITY_NORMAL = 0 , CRIFSLOADER_PRIORITY_BELOW_NORMAL = -1 ,
  CRIFSLOADER_PRIORITY_LOWEST = -2 , CRIFSLOADER_PRIORITY_ENUM_BE_SINT32 = 0x7FFFFFFF
}
 ローダープライオリティ [詳解]
 
enum  CRIFSSTDIO_SEEK_TYPE { CRIFSSTDIO_SEEK_SET = 0 , CRIFSSTDIO_SEEK_CUR = 1 , CRIFSSTDIO_SEEK_END = 2 , CRIFSSTDIO_SEEK_ENUM_BE_SINT32 = 0x7FFFFFFF }
 ファイル上のシーク開始位置 [詳解]
 

関数

void criFs_SetUserMallocFunction (CriFsMallocFunc func, void *obj)
 メモリ確保関数の登録 [詳解]
 
void criFs_SetUserFreeFunction (CriFsFreeFunc func, void *obj)
 メモリ解放関数の登録 [詳解]
 
CriError criFs_ExecuteMain (void)
 サーバー処理の実行 [詳解]
 
CriError criFs_GetNumUsedBinders (CriSint32 *cur_num, CriSint32 *max_num, CriSint32 *limit)
 バインダー使用数の取得 [詳解]
 
CriError criFs_SetSelectIoCallback (CriFsSelectIoCbFunc func)
 I/O選択コールバックの登録 [詳解]
 
CriError criFs_GetDefaultIoInterface (CriFsIoInterfacePtr *ioif)
 デフォルトI/Oインターフェイスの取得 [詳解]
 
CriError criFs_ControlFileIoMode (CriFsFileIoMode io_mode)
 ファイルI/Oモードの設定 [詳解]
 
CriError criFsBinder_Create (CriFsBinderHn *bndrhn)
 バインダーの生成 [詳解]
 
CriError criFsBinder_GetWorkSize (CriSint32 *work_size)
 バインダー作成用ワーク領域サイズの取得 [詳解]
 
CriError criFsBinder_CreateWithWork (CriFsBinderHn *bndrhn, void *work, CriSint32 work_size)
 CriFsBinderの作成 [詳解]
 
CriError criFsBinder_Destroy (CriFsBinderHn bndrhn)
 バインダーの破棄 [詳解]
 
CriError criFsBinder_BindFile (CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
 ファイルのバインド [詳解]
 
CriError criFsBinder_BindFileSection (CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, CriUint64 offset, CriSint32 size, const CriChar8 *section_name, void *work, CriSint32 worksize, CriFsBindId *bndrid)
 ファイルセクションのバインド [詳解]
 
CriError criFsBinder_Unbind (CriFsBindId bndrid)
 バインドIDの削除(アンバインド):完了復帰関数 [詳解]
 
CriError criFsBinder_GetStatus (CriFsBindId bndrid, CriFsBinderStatus *status)
 バインド状態の取得 [詳解]
 
CriError criFsLoader_Destroy (CriFsLoaderHn loader)
 CriFsLoaderの破棄 [詳解]
 
CriFsStdioHn criFsStdio_OpenFile (CriFsBinderHn bndr, const char *fname, const char *mode)
 ANSI C に準じたファイルオープン [詳解]
 
CriError criFsStdio_CloseFile (CriFsStdioHn stdhn)
 ANSI C に準じたファイルクローズ [詳解]
 
CriSint64 criFsStdio_GetFileSize (CriFsStdioHn stdhn)
 ANSI C に準じたAPIに基づくファイルサイズ取得 [詳解]
 
CriSint64 criFsStdio_TellFileOffset (CriFsStdioHn stdhn)
 ANSI C に準じたファイルリードオフセットの取得 [詳解]
 
CriSint64 criFsStdio_SeekFile (CriFsStdioHn rdr, CriSint64 offset, CRIFSSTDIO_SEEK_TYPE seek_type)
 ANSI C に準じた ファイルリードオフセットのシーク [詳解]
 
CriSint64 criFsStdio_SetInterstageBuffer (CriFsStdioHn stdhn, CriUint8 *temp_buffer, CriUint32 temp_buffer_size)
 ANSI C に準じたAPIに基づくファイル読込用中間バッファーの設定 [詳解]
 
CriSint64 criFsStdio_ReadFile (CriFsStdioHn stdhn, CriSint64 rsize, void *buf, CriSint64 bsize)
 ANSI C に準じたAPIに基づくファイルからのデータ読込 [詳解]
 
CriSint64 criFsStdio_WriteFile (CriFsStdioHn stdhn, CriSint64 rsize, void *buf, CriSint64 bsize)
 ANSI C に準じたAPIに基づくデータのファイル書込 [詳解]
 
CriError criFsStdio_SetReadPriority (CriFsStdioHn stdhn, CriFsLoaderPriority prio)
 CriFsStdioハンドルのファイル読み込みプライオリティを変更 [詳解]
 
CriError criFsStdio_RemoveFile (CriFsBinderHn binder, const CriChar8 *path, CriFsStdioRemoveResult *result)
 ファイルの削除 [詳解]
 

マクロ定義詳解

◆ CRIFS_DEFAULT_DEVICE

#define CRIFS_DEFAULT_DEVICE   (CRIFS_DEVICE_DEFAULT)

デフォルトデバイスID旧定義

備考:
この定義は廃止予定です。かわりに::CRIFS_DEVICE_DEFAULTを使用してください。
参照
CRIFS_DEVICE_DEFAULT

◆ criFs_SetUserAllocator

#define criFs_SetUserAllocator (   p_malloc_func,
  p_free_func,
  p_obj 
)
値:
{\
criFs_SetUserMallocFunction(p_malloc_func, p_obj);\
criFs_SetUserFreeFunction(p_free_func, p_obj);\
}

ユーザーアロケーターの登録

引数
[in]p_malloc_funcメモリ確保関数
[in]p_free_funcメモリ解放関数
[in]p_objユーザー指定オブジェクト
説明:
CRI File Systemライブラリにメモリアロケーター(メモリの確保/解放関数)を登録します。
CRI File Systemライブラリ内がライブラリ内で行なうメモリ解放処理を、 ユーザー独自のメモリ解放処理に置き換えたい場合に使用します。

◆ criFs_SetDefaultConfig

#define criFs_SetDefaultConfig (   p_config)
値:
{\
(p_config)->thread_model = CRIFS_CONFIG_DEFAULT_THREAD_MODEL;\
(p_config)->num_binders = CRIFS_CONFIG_DEFAULT_NUM_BINDERS;\
(p_config)->num_loaders = CRIFS_CONFIG_DEFAULT_NUM_LOADERS;\
(p_config)->num_group_loaders = CRIFS_CONFIG_DEFAULT_NUM_GROUP_LOADERS;\
(p_config)->num_stdio_handles = CRIFS_CONFIG_DEFAULT_NUM_STDIO_HANDLES;\
(p_config)->num_installers = CRIFS_CONFIG_DEFAULT_NUM_INSTALLERS;\
(p_config)->max_binds = CRIFS_CONFIG_DEFAULT_MAX_BINDS;\
(p_config)->max_files = CRIFS_CONFIG_DEFAULT_MAX_FILES;\
(p_config)->max_path = CRIFS_CONFIG_DEFAULT_MAX_PATH;\
(p_config)->version = CRI_FS_VERSION;\
(p_config)->version_string = CRI_FS_VER_NUM;\
(p_config)->enable_crc_check = CRI_FALSE;\
}
#define CRIFS_CONFIG_DEFAULT_THREAD_MODEL
コンフィギュレーションのデフォルト値
Definition: cri_le_file_system.h:55

デフォルトコンフィギュレーションのセット

引数
[in]p_configコンフィギュレーション
説明:
CriAtomExConfig::fs_config に設定するCRI File System の初期化パラメーター( CriFsConfig )に、デフォルトの値をセットします。
補足:
コンフィギュレーションに設定する各パラメータを、アプリケーションで使用するハンドルの数に応じて調節することで、 ライブラリが必要とするメモリサイズを小さく抑えることが可能です。
しかし、アプリケーション中で使用するハンドルの数が明確でない開発初期段階や、メモリサイズがタイトではないケースでは、 本マクロを使用することによりで、初期化処理を簡略化することが可能です。
注意
: 本マクロでは、ほとんどのケースで必要充分な数のハンドルが確保できるよう、コンフィギュレーションの各パラメータに大きめの値をセットします。
そのため、本マクロを使用した場合、ライブラリが必要とするワーク領域のサイズは大きくなりますので、ご注意ください。
(メモリサイズがタイトなケースでは、本マクロでコンフィギュレーションを初期化した後、各パラメータを個別に調節することをオススメいたします。)
参照
CriFsConfig

型定義詳解

◆ CriFsThreadModel

スレッドモデル

説明:
CRI File Systemライブラリがどのようなスレッドモデルで動作するかを表します。
CriAtomExConfig::fs_config に、::CriFsConfig 構造体にて指定します。
参照
CriFsConfig
CriAtomExConfig

◆ CriFsConfig

typedef struct CriFsConfigTag CriFsConfig

コンフィギュレーション

説明:
CRI File Systemライブラリの動作仕様を指定するための構造体です。
CriAtomExConfig::fs_config に本構造体を指定します。
CRI File Systemライブラリは、初期化時に指定されたコンフィギュレーションに応じて、内部リソースを必要な数分だけ確保します。
そのため、コンフィギュレーションに指定する値を小さくすることで、ライブラリが必要とするメモリのサイズを小さく抑えることが可能です。
ただし、コンフィギュレーションに指定した数以上のハンドルを確保することはできなくなるため、値を小さくしすぎると、ハンドルの確保に失敗する可能性があります。
備考:
デフォルト設定を使用する場合、 criFs_SetDefaultConfig 関数でデフォルトパラメータをセットし、 CriAtomExConfig::fs_config に指定してください。
注意
将来的にメンバーが増える可能性に備え、設定前に::criFs_SetDefaultConfig 関数で初期化してから使用してください。
参照
CriAtomExConfig, criFs_SetDefaultConfig

◆ CriFsMallocFunc

typedef void*( * CriFsMallocFunc) (void *obj, CriUint32 size)

メモリ確保関数

引数
[in]objユーザー指定オブジェクト
[in]size要求メモリサイズ(バイト単位)
戻り値
void* 確保したメモリのアドレス(失敗時はNULL)
説明:
メモリ確保関数登録用のインターフェイスです。
CRI File Systemライブラリがライブラリ内で行なうメモリ確保処理を、 ユーザー独自のメモリ確保処理に置き換えたい場合に使用します。
備考:
コールバック関数が実行される際には、sizeに必要とされるメモリのサイズがセット されています。
コールバック関数内でsize分のメモリを確保し、確保したメモリのアドレスを 戻り値として返してください。
尚、引数の obj には、::criFs_SetUserMallocFunction 関数で登録したユーザー指定 オブジェクトが渡されます。
メモリ確保時にメモリマネージャー等を参照する必要がある場合には、 当該オブジェクトを criFs_SetUserMallocFunction 関数の引数にセットしておき、 本コールバック関数の引数を経由して参照してください。
注意
メモリの確保に失敗した場合、エラーコールバックが返されたり、呼び出し元の関数が 失敗する可能性がありますのでご注意ください。
参照
CriFsFreeFunc, criFs_SetUserMallocFunction

◆ CriFsFreeFunc

typedef void( * CriFsFreeFunc) (void *obj, void *mem)

メモリ解放関数

引数
[in]objユーザー指定オブジェクト
[in]mem解放するメモリアドレス
戻り値
なし
説明:
メモリ解放関数登録用のインターフェイスです。
CRI File Systemライブラリ内がライブラリ内で行なうメモリ解放処理を、 ユーザー独自のメモリ解放処理に置き換えたい場合に使用します。
備考:
コールバック関数が実行される際には、memに解放すべきメモリのアドレスがセット されています。
コールバック関数内でmemの領域のメモリを解放してください。 尚、引数の obj には、::criFs_SetUserFreeFunction 関数で登録したユーザー指定 オブジェクトが渡されます。
メモリ確保時にメモリマネージャー等を参照する必要がある場合には、 当該オブジェクトを criFs_SetUserFreeFunction 関数の引数にセットしておき、 本コールバック関数の引数を経由して参照してください。
参照
criFsMallocFunc, criFs_SetUserFreeFunction

◆ CriFsSelectIoCbFunc

typedef CriError( * CriFsSelectIoCbFunc) (const CriChar8 *path, CriFsDeviceId *device_id, CriFsIoInterfacePtr *ioif)

I/O選択コールバック関数

引数
[in]pathファイルのパス
[out]device_idデバイスID
[out]ioifI/Oインターフェイス
説明:
I/O選択コールバック関数は、CRI File SystemライブラリのI/O処理を、 ユーザーの独自I/Oインターフェースで置き換える際に使用します。
具体的には、ユーザーは CriFsSelectIoCbFunc 型の関数を実装し、 その関数を criFs_SetSelectIoCallback 関数にセットする必要があります。
CriFsSelectIoCbFunc 関数は、入力されたファイルのパス(引数のpath)を解析し、 そのファイルが存在するデバイスのID(引数のdevice_id)と、 デバイスにアクセスするためのI/Oインターフェイス(引数のioif)を返す必要があります。
補足:
ライブラリがデフォルト状態で利用するI/Oインターフェイスは、 criFs_GetDefaultIoInterface 関数で取得可能です。
特定のファイルのみを独自のI/Oインターフェイスを処理したい場合には、 他のファイルを全て criFs_GetDefaultIoInterface 関数で取得したI/Oインターフェイスで処理してください。
CriError
エラーコード
Definition: cri_le_error.h:43
参照
criFs_SetSelectIoCallback, criFs_GetDefaultIoInterface

◆ CriFsBinderHn

typedef struct CriFsBinderHnObjTag* CriFsBinderHn

CriFsBinderハンドル

説明:
バインダーとは、ファイルを効率良く扱うためのデータベースです。
  • CriFsBinderHn (バインダーハンドル)とバインド
    バインダーを利用するには、バインダーハンドル( CriFsBinderHn )を作成し、 CPKファイル/ファイル/ディレクトリをバインダーに結びつけます。 このバインダーへの結び付けをバインドと呼びます。
    バインダーを作成すると、バインダーハンドル( CriFsBinderHn )が取得されます。
  • CriFsBindId (バインドID)
    バインダーにバインドを行うと、バインドIDが作成されます。個々のバインドを識別するために使用します。
  • ファイルのバインドとアンバインド
    バインダーには、CPKファイルやファイル、ディレクトリをどのような組み合わせででもバインドできます。
    バインドした項目のバインド状態を解除することをアンバインドと呼びます。
  • 利用できるバインド数
    作成できるバインダー数や同時にバインドできる最大数は、 CriFsConfig の num_binders (バインダー数)や max_binds (同時バインド可能な最大数)で指定します。
  • CPKファイルのバインド
    CPKファイルに収納されている個々のファイル(コンテンツファイル)にアクセスするには、 CPKファイルをバインドする必要があります。
    CPKファイルのコンテンツファイルもバインドできます。元のCPKファイルをアンバインドした場合、 バインドされているコンテンツファイルもアンバインドされます(暗黙的アンバインド)。
  • バインダーのプライオリティ
    バインダーは、目的のファイルがどのバインドIDにあるのかを検索します。
    このバインドIDの検索順は、基本的にはバインドされた順番になりますが、バインドIDのプライオリティを 操作することで、検索順を変更することができます。
  • バインダーとCriFsのAPI
    CriFsLoader, CriFsGroupLoader, CriFsBinderには、バインダーを引数に持つAPIがあります。 その際には、 CriFsBinderHn と CriFsBindId 、どちらを指定するのかに注意してください。

◆ CriFsBindId

typedef CriUint32 CriFsBindId

CriFsBinder ID

説明:
バインダーに対してバインドを行うと、 CriFsBindId (バインドID)が作成されます。
バインドIDは、個々のバインドを識別するためのもので、値は符号なし32ビット値の範囲を とります。
この型の変数は、無効なバインドIDであることを意味する特別値 CRIFSBINDER_BID_NULL (ゼロ) をとる場合もあります。

◆ CriFsBinderFileInfo

ファイル情報構造体

説明:
criFsBinder_Find(ById) 関数の出力情報です。 検索したファイルにアクセスするための情報を格納します。
CPKファイルのコンテンツファイルである場合、pathはCPKファイル名、offsetはCPKファイル 先頭からのオフセット位置となります。
参照
criFsBinder_Find(), criFsBinder_FindById()

列挙型詳解

◆ CriFsThreadModelTag

スレッドモデル

説明:
CRI File Systemライブラリがどのようなスレッドモデルで動作するかを表します。
CriAtomExConfig::fs_config に、::CriFsConfig 構造体にて指定します。
参照
CriFsConfig
CriAtomExConfig
列挙値
CRIFS_THREAD_MODEL_MULTI 

マルチスレッド

説明:
ライブラリは内部でスレッドを作成し、マルチスレッドにて動作します。
スレッドはCRI File Systemの初期化時に作成されます。
CRIFS_THREAD_MODEL_MULTI_USER_DRIVEN 

マルチスレッド(ユーザー駆動式)

説明:
ライブラリは内部でスレッドを作成し、マルチスレッドにて動作します。
スレッドはCRI File Systemの初期化時に作成されます。
サーバー処理自体は作成されたスレッド上で実行されますが、 CRIFS_THREAD_MODEL_MULTI とは異なり、自動的には実行されません。
ユーザーは criFs_ExecuteMain 関数で明示的にサーバー処理を駆動する必要があります。
criFs_ExecuteMain 関数を実行すると、スレッドが起動し、サーバー処理が実行されます。)
CRIFS_THREAD_MODEL_USER_MULTI 

ユーザーマルチスレッド

説明:
LE版では使用しない定義です。
CRIFS_THREAD_MODEL_SINGLE 

シングルスレッド

説明:
LE版では使用しない定義です。

◆ CriFsFileIoModeTag

ファイルI/Oモードの設定

列挙値
CRIFS_FILE_IO_MODE_DEFAULT 

機種デフォルトのファイルI/Oモード

CRIFS_FILE_IO_MODE_SHARE_FILE_HANDLE 

ファイルハンドルを共有する

CRIFS_FILE_IO_MODE_OPEN_EVERY_TIME 

ファイルアクセスごとにファイルのオープンを行う

◆ CriFsDeviceIdTag

デバイスID

列挙値
CRIFS_DEVICE_00 

デフォルトデバイス

CRIFS_DEVICE_07 

メモリ

CRIFS_DEVICE_INVALID 

無効

◆ CriFsFileMode

ファイルオープンモード

列挙値
CRIFS_FILE_MODE_APPEND 

既存ファイルに追記

CRIFS_FILE_MODE_CREATE 

ファイルの新規作成(既存のファイルは上書き)

CRIFS_FILE_MODE_CREATE_NEW 

ファイルの新規作成(上書き不可)

CRIFS_FILE_MODE_OPEN 

既存ファイルのオープン

CRIFS_FILE_MODE_OPEN_OR_CREATE 

ファイルのオープン(存在しない場合は新規作成)

CRIFS_FILE_MODE_TRUNCATE 

既存ファイルを0Byteに切り詰めてオープン

◆ CriFsFileAccess

ファイルアクセス種別

列挙値
CRIFS_FILE_ACCESS_READ 

読み込みのみ

CRIFS_FILE_ACCESS_WRITE 

書き込みのみ

CRIFS_FILE_ACCESS_READ_WRITE 

読み書き

◆ CriFsIoError

I/Oインターフェイスのエラーコード

Error of I/O Interface

列挙値
CRIFS_IO_ERROR_OK 

エラーなし

CRIFS_IO_ERROR_NG 

一般エラー

CRIFS_IO_ERROR_TRY_AGAIN 

リトライすべき

CRIFS_IO_ERROR_NG_NO_ENTRY 

個別エラー(ファイル無し)

CRIFS_IO_ERROR_NG_INVALID_DATA 

個別エラー(データが不正)

◆ CriFsBinderStatus

バインダーステータス

説明:
criFsBinder_GetStatus 関数で取得される、バインドIDの状態です。
バインドが完了するまで、バインドした項目にアクセスすることはできません。
バインド対象が存在しなかったり、バインドに必要なリソースが不足する場合は、 バインド失敗となります。
バインド失敗時の詳しい情報はエラーコールバック関数で取得してください。
参照
criFsBinder_GetStatus()
列挙値
CRIFSBINDER_STATUS_ANALYZE 

バインド処理中

CRIFSBINDER_STATUS_COMPLETE 

バインド完了

CRIFSBINDER_STATUS_UNBIND 

アンバインド処理中

CRIFSBINDER_STATUS_REMOVED 

アンバインド完了

CRIFSBINDER_STATUS_INVALID 

バインド無効

CRIFSBINDER_STATUS_ERROR 

バインド失敗

◆ CriFsLoaderPriority

ローダープライオリティ

列挙値
CRIFSLOADER_PRIORITY_HIGHEST 

最高

CRIFSLOADER_PRIORITY_ABOVE_NORMAL 


CRIFSLOADER_PRIORITY_NORMAL 

普通

CRIFSLOADER_PRIORITY_BELOW_NORMAL 


CRIFSLOADER_PRIORITY_LOWEST 

最低

◆ CRIFSSTDIO_SEEK_TYPE

ファイル上のシーク開始位置

列挙値
CRIFSSTDIO_SEEK_SET 

ファイルの先頭

CRIFSSTDIO_SEEK_CUR 

現在の読込位置

CRIFSSTDIO_SEEK_END 

ファイルの終端

関数詳解

◆ criFs_SetUserMallocFunction()

void criFs_SetUserMallocFunction ( CriFsMallocFunc  func,
void *  obj 
)

メモリ確保関数の登録

引数
[in]funcメモリ確保関数
[in]objユーザー指定オブジェクト
説明:
CRI File Systemライブラリにメモリ確保関数を登録します。
CRI File Systemライブラリ内がライブラリ内で行なうメモリ確保処理を、 ユーザー独自のメモリ確保処理に置き換えたい場合に使用します。

本関数の使用手順は以下のとおりです。
(1) CriFsMallocFunc インターフェイスに副ったメモリ確保関数を用意する。
(2) criFs_SetUserMallocFunction 関数を使用し、CRI File Systemライブラリに対して メモリ確保関数を登録する。

具体的なコードの例は以下のとおりです。
例:
// 独自のメモリ確保関数を用意
void *user_malloc(void *obj, CriUint32 size)
{
void *mem;
// メモリの確保
mem = malloc(size);
return (mem);
}
main()
{
:
// メモリ確保関数の登録
criFs_SetUserMallocFunction(user_malloc, NULL);
:
}
void criFs_SetUserMallocFunction(CriFsMallocFunc func, void *obj)
メモリ確保関数の登録
備考:
引数の obj に指定した値は、 CriFsMallocFunc に引数として渡されます。
メモリ確保時にメモリマネージャー等を参照する必要がある場合には、 当該オブジェクトを本関数の引数にセットしておき、コールバック関数で引数を経由 して参照してください。
注意
メモリ確保関数を登録する際には、合わせてメモリ解放関数( CriFsFreeFunc )を 登録する必要があります。
参照
CriFsMallocFunc, criFs_SetUserFreeFunction

◆ criFs_SetUserFreeFunction()

void criFs_SetUserFreeFunction ( CriFsFreeFunc  func,
void *  obj 
)

メモリ解放関数の登録

引数
[in]funcメモリ解放関数
[in]objユーザー指定オブジェクト
説明:
CRI File Systemライブラリにメモリ解放関数を登録します。
CRI File Systemライブラリ内がライブラリ内で行なうメモリ解放処理を、 ユーザー独自のメモリ解放処理に置き換えたい場合に使用します。

本関数の使用手順は以下のとおりです。
(1) CriFsFreeFunc インターフェイスに副ったメモリ解放関数を用意する。
(2) criFs_SetUserFreeFunction 関数を使用し、CRI File Systemライブラリに対して メモリ解放関数を登録する。

具体的なコードの例は以下のとおりです。
例:
// 独自のメモリ解放関数を用意
void user_free(void *obj, void *mem)
{
// メモリの解放
free(mem);
return;
}
main()
{
:
// メモリ解放関数の登録
criFs_SetUserFreeFunction(user_free, NULL);
:
}
void criFs_SetUserFreeFunction(CriFsFreeFunc func, void *obj)
メモリ解放関数の登録
備考:
引数の obj に指定した値は、 CriFsFreeFunc に引数として渡されます。
メモリ確保時にメモリマネージャー等を参照する必要がある場合には、 当該オブジェクトを本関数の引数にセットしておき、コールバック関数で引数を経由 して参照してください。
注意
メモリ解放関数を登録する際には、合わせてメモリ確保関数( CriFsMallocFunc )を 登録する必要があります。
参照
CriFsFreeFunc, criFs_SetUserMallocFunction

◆ criFs_ExecuteMain()

CriError criFs_ExecuteMain ( void  )

サーバー処理の実行

戻り値
CriError エラーコード
説明:
CRI File Systemライブラリの内部状態を更新します。
アプリケーションは、この関数を定期的(毎フレーム1回程度)に実行する必要があります。
注意
criFs_ExecuteMain を実行しない場合、ファイルのロードが進まない等の問題が発生する可能性があります。

◆ criFs_GetNumUsedBinders()

CriError criFs_GetNumUsedBinders ( CriSint32 *  cur_num,
CriSint32 *  max_num,
CriSint32 *  limit 
)

バインダー使用数の取得

引数
[out]cur_num現在使用中のバインダーの数
[out]max_num過去に最大同時に利用したバインダーの数
[out]limit利用可能なバインダーの上限数
戻り値
CriError エラーコード
説明:
バインダーの使用数に関する情報を取得します。

◆ criFs_SetSelectIoCallback()

CriError criFs_SetSelectIoCallback ( CriFsSelectIoCbFunc  func)

I/O選択コールバックの登録

引数
[in]funcI/O選択コールバック
戻り値
CriError エラーコード
説明:
I/O選択コールバック関数( CriFsSelectIoCbFunc )を登録します。
CRI File Systemライブラリはファイルにアクセスする際、まず初めに、そのファイルが存在するデバイスのID( CriFsDeviceId )と、 デバイスにアクセスするためのI/Oインターフェイス( CriFsIoInterface )を選択します。
デフォルト状態では、デバイスIDとI/Oインターフェイスの選択はライブラリ内で暗黙的に行なわれますが、 本関数を使用することで、デバイスIDとI/Oインターフェイスをユーザーが自由に指定することが可能になります。
これにより、ユーザーが独自に作成したI/Oインターフェイスを使用してファイルにアクセスすることが可能になります。
// 独自のI/Oインターフェイスを定義
// 備考)構造体のメンバー関数はユーザーが独自に実装。
static CriFsIoInterface g_userIoInterface = {
userExists,
userRemove,
userRename,
userOpen,
userClose,
userGetFileSize,
userRead,
userIsReadComplete,
userGetReadSize,
userWrite,
userIsWriteComplete,
userGetWriteSize,
userFlush,
userResize,
userGetNativeFileHandle
};
// I/O選択コールバック関数
CriError user_select_io_callback(
const CriChar8 *path, CriFsDeviceId *device_id, CriFsIoInterfacePtr *ioif)
{
// パスを解析し、デバイスのIDを特定する
if (strncmp(path, …) == 0) {
(*device_id) = CRIFS_DEVICE_~;
} else {
(*device_id) = CRIFS_DEFAULT_DEVICE;
}
// ファイルアクセスに使用するI/Oインターフェイスを指定する
(*ioif) = g_userIoInterface;
return (CRIERR_OK);
}
int main(…)
{
// I/O選択コールバックを登録
criFs_SetSelectIoCallback(user_select_io_callback);
}
CriError criFs_SetSelectIoCallback(CriFsSelectIoCbFunc func)
I/O選択コールバックの登録
enum CriFsDeviceIdTag CriFsDeviceId
デバイスID
#define CRIFS_DEFAULT_DEVICE
デフォルトデバイスID旧定義
Definition: cri_le_file_system.h:76
@ CRIERR_OK
Definition: cri_le_error.h:44
I/Oインターフェイス
Definition: cri_le_file_system.h:494
注意
コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

funcにNULLを指定するとことで登録済み関数の登録解除が行えます。
参照
CriFsSelectIoCbFunc, criFs_GetDefaultIoInterface

◆ criFs_GetDefaultIoInterface()

CriError criFs_GetDefaultIoInterface ( CriFsIoInterfacePtr ioif)

デフォルトI/Oインターフェイスの取得

引数
[out]ioifI/Oインターフェイス
戻り値
CriError エラーコード
説明:
CRI File Systemライブラリがデフォルトで利用するI/Oインターフェイスを取得します。
I/O選択コールバック(CriFsSelectIoCbFunc )内でデフォルトの処理をさせたい場合には、 本関数で取得したI/Oインターフェイスを、出力値として返してください。
// 独自のI/Oインターフェイスを定義
// 備考)構造体のメンバー関数はユーザーが独自に実装。
static CriFsIoInterface g_userIoInterface = {
userExists,
userRemove,
userRename,
userOpen,
userClose,
userGetFileSize,
userRead,
userIsReadComplete,
userGetReadSize,
userWrite,
userIsWriteComplete,
userGetWriteSize,
userFlush,
userResize,
userGetNativeFileHandle
};
// I/O選択コールバック関数
CriError user_select_io_callback(
const CriChar8 *path, CriFsDeviceId *device_id, CriFsIoInterfacePtr *ioif)
{
// パスを解析し、デバイスのIDを特定する
if (strncmp(path, …) == 0) {
(*device_id) = CRIFS_DEVICE_~;
} else {
(*device_id) = CRIFS_DEFAULT_DEVICE;
}
// sample.binのみを独自インターフェイスで処理する
if (strcmp(path, "sample.bin") == 0) {
(*ioif) = g_userIoInterface;
} else {
// 他のファイルはデフォルトI/Oインターフェイスで処理
}
return (CRIERR_OK);
}
int main(…)
{
// I/O選択コールバックを登録
criFs_SetSelectIoCallback(user_select_io_callback);
}
CriError criFs_GetDefaultIoInterface(CriFsIoInterfacePtr *ioif)
デフォルトI/Oインターフェイスの取得
参照
CriFsSelectIoCbFunc, criFs_SetSelectIoCallback

◆ criFs_ControlFileIoMode()

CriError criFs_ControlFileIoMode ( CriFsFileIoMode  io_mode)

ファイルI/Oモードの設定

引数
[in]io_modeファイルI/Oモード
戻り値
CriError エラーコード
説明:
CRI File Systemライブラリ全体のファイルI/Oモードを設定します。
CRIFS_FILE_IO_MODE_SHARE_FILE_HANDLE を設定すると、ファイルハンドルをライブラリ内部で共有 し、ファイルアクセスを効率良く行います。
具体的には、::criFsBinder_BindFile 関数を呼び出し時に作成 したファイルハンドルはアンバインドするまでライブラリ内部で保持し、保持中のファイルに対するアクセスでは ファイルオープンが発生しません。

CRIFS_FILE_IO_MODE_OPEN_EVERY_TIME を設定すると、ファイルハンドルの共有を行わずにファイル アクセスのたびにファイルオープンを行います。
ファイルオープン負荷の分だけファイル読み込みの性能は落ちますが、ファイルアクセスが必要な時のみ ファイルハンドルを作成するため、ファイルディスクリプタなどのリソース消費を最小限に抑えることが可能です。

未設定時(CRI File Systemライブラリのデフォルト設定)は、機種ごとに異なります。
機種固有マニュアルに記載がない限り、デフォルト設定は CRIFS_FILE_IO_MODE_SHARE_FILE_HANDLE です。
注意:
本関数はライブラリ初期化前に呼び出してください。
ライブラリ初期化後に呼び出すことは出来ません。
参照
CriFsFileIoMode

◆ criFsBinder_Create()

CriError criFsBinder_Create ( CriFsBinderHn bndrhn)

バインダーの生成

引数
[out]bndrhnバインダーハンドル
戻り値
CriError エラーコード
説明:
バインダーを生成し、バインダーハンドルを返します。
例:
:
CriError criFsBinder_Create(CriFsBinderHn *bndrhn)
バインダーの生成
CriError criFsBinder_Destroy(CriFsBinderHn bndrhn)
バインダーの破棄
struct CriFsBinderHnObjTag * CriFsBinderHn
CriFsBinderハンドル
Definition: cri_le_file_system.h:860
参照
criFsBinder_Destroy()

◆ criFsBinder_GetWorkSize()

CriError criFsBinder_GetWorkSize ( CriSint32 *  work_size)

バインダー作成用ワーク領域サイズの取得

引数
[out]work_sizeワーク領域サイズ
戻り値
CriError エラーコード
説明:
バインダーの作成に必要なワーク領域のサイズを取得します。
criFsBinder_CreateWithWork 関数でバインダーを作成する場合、 本関数でワーク領域のサイズを取得し、取得したサイズ分のメモリを確保する必要があります。
備考:
criFsBinder_Create 関数を使用してバインダーを作成する場合、本関数を使用する必要はありません。
参照
criFsBinder_CreateWithWork

◆ criFsBinder_CreateWithWork()

CriError criFsBinder_CreateWithWork ( CriFsBinderHn bndrhn,
void *  work,
CriSint32  work_size 
)

CriFsBinderの作成

引数
[out]bndrhnCriFsBinderハンドル
[in]workワーク領域
[in]work_sizeワーク領域サイズ
戻り値
CriError エラーコード
説明:
CriFsBinderを作成します。
バインダーを作成する際、ワーク領域を指定する点が criFsBinder_Create 関数と異なります。

本関数で作成したバインダーは、ライブラリ初期化時に指定したワーク領域とは異なる領域に配置されます。 そのため、 CriFsConfig::num_binders の制限を受けません。
CriFsConfig::num_binders に指定した数のバインダーを作成した状態であっても、 本関数でさらにバインダーを作成することが可能です。)

ワーク領域のサイズは criFsBinder_GetWorkSize 関数で取得可能です。
バインダー作成前に criFsBinder_GetWorkSize 関数で取得したサイズ分のメモリを確保し、本関数に指定してください。

本関数で作成したバインダーは、デフォルト状態では同時に1回しかバインド処理が行えません。
注意
バインダーを破棄する( criFsBinder_Destroy 関数を実行する)までは、ワーク領域に対する読み書きが発生します。
ワーク領域として指定したメモリは、バインダーを破棄するまでは解放しないでください。
参照
criFsBinder_GetWorkSize

◆ criFsBinder_Destroy()

CriError criFsBinder_Destroy ( CriFsBinderHn  bndrhn)

バインダーの破棄

引数
[in]bndrhnバインダーハンドル
戻り値
CriError エラーコード
説明:
バインダーを破棄します。
注意:
破棄するバインダーにバインドされているバインドIDも同時に破棄されます。
本関数で破棄できるのは、::criFsBinder_Create 関数により生成されたバインダーハンドルのみです。
CriFsBindId については criFsBinder_Unbind 関数をご使用ください。
参照
criFsBinder_Create() criFsBinder_Unbind()

◆ criFsBinder_BindFile()

CriError criFsBinder_BindFile ( CriFsBinderHn  bndrhn,
CriFsBinderHn  srcbndrhn,
const CriChar8 *  path,
void *  work,
CriSint32  worksize,
CriFsBindId bndrid 
)

ファイルのバインド

引数
[in,out]bndrhnファイルバインドをするバインダーハンドル
[in]srcbndrhnバインド対象のファイルを検索するためのバインダーハンドル
[in]pathバインドするファイルのパス名
[in]workバインド用ワーク領域
[in]worksizeワーク領域のサイズ(バイト)
[out]bndridバインドID
戻り値
CriError エラーコード
説明:
ファイルをバインドし、バインドIDを返します。
srcbndrhnのバインダーからpathで指定されたファイルを検索し、bndrhnにバインドします。 srcbndrhnがNULLの場合、デフォルトデバイス上のファイルを検索します。
ワーク領域(work)のサイズは、criFsBinder_GetWorkSizeForBindFileで取得できます。 ワーク領域は、バインドIDが破棄されるまで保持して下さい。
メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にNULL(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。
バインドを開始できない場合、バインドIDは CRIFSBINDER_BID_NULL が返されます。 バインドIDに CRIFSBINDER_BID_NULL 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。<br>
バインドされたファイルはファイルオープン状態で保持します。 このため、内部的にCriFsLoaderを作成しています。<br>
本関数は即時復帰関数です。本関数から復帰した直後は、ファイルのバインドはまだ完了しておらず、 バインドIDを利用したファイルへのアクセスは行えません。
バインドIDのバインド状態が完了( CRIFSBINDER_STATUS_COMPLETE )となった後に、 ファイルは利用可能となります。
バインド状態は criFsBinder_GetStatus 関数で取得します。
例:
void *work;
CriSint32 wksz;
CriFsBindId bndrid;
criFsBinder_GetWorkSizeForBindFile(NULL, "sample.txt", &wksz);
work = malloc(wksz);
criFsBinder_BindFile(bndrhn, NULL, "sample.txt", work, wksz, &bndrid);
for (;;) {
criFsBinder_GetStatus(bndrid, &status);
if (status == CRIFSBINDER_STATUS_COMPLETE) break;
}
// データのロード (ファイルオープン状態でのアクセス)
criFsBinder_GetFileSize(binder, "sample.txt", &fsize);
criFsLoader_Load(loader, binder, "sample.txt", 0, fsize, buffer, buffer_size);
// ロード待ち...
CriFsBinderStatus
バインダーステータス
Definition: cri_le_file_system.h:905
@ CRIFSBINDER_STATUS_COMPLETE
Definition: cri_le_file_system.h:908
CriError criFsBinder_GetStatus(CriFsBindId bndrid, CriFsBinderStatus *status)
バインド状態の取得
CriError criFsBinder_BindFile(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
ファイルのバインド
CriUint32 CriFsBindId
CriFsBinder ID
Definition: cri_le_file_system.h:872
参照
criFsBinder_GetWorkSizeForBindFile(), criFsBinder_SetUserHeapFunc(), criFsBinder_GetStatus(), criFsBinder_Unbind()

◆ criFsBinder_BindFileSection()

CriError criFsBinder_BindFileSection ( CriFsBinderHn  bndrhn,
CriFsBinderHn  srcbndrhn,
const CriChar8 *  path,
CriUint64  offset,
CriSint32  size,
const CriChar8 *  section_name,
void *  work,
CriSint32  worksize,
CriFsBindId bndrid 
)

ファイルセクションのバインド

引数
[in,out]bndrhnファイルセクションバインドをするバインダーハンドル
[in]srcbndrhnバインド対象のファイルを検索するためのバインダーハンドル
[in]pathバインドするファイルのパス名
[in]offsetデータの開始位置(バイト)
[in]sizeデータサイズ(バイト)
[in]section_nameセクション名
[in]workバインド用ワーク領域
[in]worksizeワーク領域のサイズ(バイト)
[out]bndridバインドID
戻り値
CriError エラーコード
説明:
ファイルの一部分をバインドし、その箇所を仮想的なファイルとして扱えるよう設定します。
srcbndrhnのバインダーからpathで指定されたファイルを検索してバインドします。 srcbndrhnがNULLの場合、デフォルトデバイスを使用します。
ワーク領域(work)のサイズは、criFsBinder_GetWorkSizeForBindFileSectionで取得できます。 ワーク領域は、バインドIDが破棄されるまで保持して下さい。
メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にNULL(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。
バインドを開始できない場合、バインドIDは CRIFSBINDER_BID_NULL が返されます。 バインドIDに CRIFSBINDER_BID_NULL 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。<br>
バインドされたファイルはファイルオープン状態で保持します。 このため、内部的にCriFsLoaderを作成しています。<br>
本関数は即時復帰関数です。本関数から復帰した直後は、ファイルのバインドはまだ完了しておらず、 バインドIDを利用したファイルへのアクセスは行えません。
バインドIDのバインド状態が完了( CRIFSBINDER_STATUS_COMPLETE )となった後に、 ファイルは利用可能となります。
バインド状態は criFsBinder_GetStatus 関数で取得します。
例:
CriFsBindId binder_id;
// sample.txtの100バイト目から5000バイト分をSTAGE1という名前でバインド
// 備考)アロケーターが事前に登録済みであればワーク領域サイズの指定は不要。
criFsBinder_BindFileSection(binder_hn, NULL, "sample.txt", 100, 5000, "STAGE1", NULL, 0, &binder_id);
// バインド完了待ち
for (;;) {
// バインド状態のチェック
criFsBinder_GetStatus(binder_id, &status);
if (status == CRIFSBINDER_STATUS_COMPLETE) {
break;
}
// サーバー処理の実行
// Vsync待ち等
}
// バインド済みのセクションのデータを読み込み
// 備考)ロード時のパスにはセクション名を指定する。
criFsLoader_Load(loader_hn, binder_hn, "STAGE1", 0, 5000, buffer, buffer_size);
CriError criFsBinder_BindFileSection(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, CriUint64 offset, CriSint32 size, const CriChar8 *section_name, void *work, CriSint32 worksize, CriFsBindId *bndrid)
ファイルセクションのバインド
CriError criFs_ExecuteMain(void)
サーバー処理の実行
参照
criFsBinder_GetWorkSizeForBindFileSection, criFsBinder_GetStatus, criFsBinder_Unbind

◆ criFsBinder_Unbind()

CriError criFsBinder_Unbind ( CriFsBindId  bndrid)

バインドIDの削除(アンバインド):完了復帰関数

引数
[in]bndridバインドID
戻り値
CriError エラーコード
説明:
バインドIDをバインダーから削除します。
本関数は完了復帰関数です。 指定されたバインドIDを削除できない場合、CRIERR_NGを返します。
補足:
必要に応じてファイルのクローズ処理を行いますので、実行環境により数msecかかる場合があります。
アンバインドするバインドIDに依存している他のバインドIDも同時にアンバインドされます(暗黙的アンバインド)。
例えば、CPKバインドIDのコンテンツファイルをFILEバインドしているバインドIDは、 参照元のCPKバインドIDがアンバインドされると、暗黙的アンバンドされます。 暗黙的にアンバインドされた項目は、暗黙的アンバインドリストに追加されます。
暗黙的アンバインドされたバインドIDは、通常どおりにcriFsBinder_Unbind関数でアンバインドするか、 criFsBinder_CleanImplicitUnbindList関数で暗黙的アンバインドリストをクリアする必要があります。
例:
// CPKファイルのバインド
criFsBinder_BindCpk(bndrhn, NULL, cpkpath, cpkwk, cpkwksz, &cpkid);
:
// fileidは、cpkidのコンテンツファイルをバインド
criFsBinder_BindFile(bndrhn, bndrhn, cntspath, filewk, filewksz, &fileid);
:
// CPKバインドIDのアンバインド
criFsBinder_Unbind(cpkid); // ここでfileidは暗黙的アンバインドされる。
// FileバインドIDのアンバインド
CriError criFsBinder_Unbind(CriFsBindId bndrid)
バインドIDの削除(アンバインド):完了復帰関数
参照
criFsBinder_BindCpk(), criFsBinder_BindFile(), criFsBinder_SetUserHeapFunc(), criFsBinder_CleanImplicitUnbindList()

◆ criFsBinder_GetStatus()

CriError criFsBinder_GetStatus ( CriFsBindId  bndrid,
CriFsBinderStatus status 
)

バインド状態の取得

引数
[in]bndridバインドID
[out]statusCriFsBinderStatusバインダーステータス
戻り値
CriError エラーコード
説明:
指定されたバインドIDのバインド状態を取得します。
バインド状態が CRIFSBINDER_STATUS_COMPLETE になるまでは、 そのバインドIDによるファイルアクセスを行えません。
例:
criFsBinder_GetStatus(bndrid, &status);
参照
criFsBinder_BindFile()

◆ criFsLoader_Destroy()

CriError criFsLoader_Destroy ( CriFsLoaderHn  loader)

CriFsLoaderの破棄

引数
[in]loaderCriFsLoaderハンドル
戻り値
CriError エラーコード
説明:
CriFsLoaderを破棄します。

◆ criFsStdio_OpenFile()

CriFsStdioHn criFsStdio_OpenFile ( CriFsBinderHn  bndr,
const char *  fname,
const char *  mode 
)

ANSI C に準じたファイルオープン

引数
[in]bndrオープンしたいファイルがバインドされているCriFsBinderのハンドル
[in]fnameオープンしたいファイルパス
[in]modeオープンモード ("r":読み込み専用モード,"w":書き込み専用モード)
戻り値
CriFsStdioHn 成功した場合、有効なCriFsStdioハンドルを返します。
失敗した場合はNULLを返します。
説明:
指定されたファイルをオープンします。
第一引数には、オープンしたいファイルがバインドされているバインダーを指定します。
プラットフォーム標準のファイルパスからファイルをオープンしたい場合、第一引数にはNULLを指定します。
第二引数には、オープンしたいファイルパスを文字列で指定します。
第三引数は、オープンのモードです。"r"を指定すると読み込み専用モード、
"w"を指定すると書き込み専用モードでファイルをオープンします。
書き込み専用モードは、ファイル書き込みをサポートしているプラットフォームでのみ正常に動作し、 未サポートのプラットフォームではエラーコールバックが発生し、オープンは失敗します。
備考:
ファイルの書き込みは以下のルールで行われます。
  • 指定したファイルが存在しない場合、新規にファイルを作成。
  • 指定したファイルが既に存在する場合、既存ファイルを編集します。
    (既存ファイルが削除されることはありません。)
    既存ファイルを削除して新規にファイルの書き込みを行いたい場合には、 本関数を実行する前に criFsStdio_RemoveFile 関数でファイルの削除を行ってください。
参照
criFsStdio_CloseFile, criFsStdio_RemoveFile

◆ criFsStdio_CloseFile()

CriError criFsStdio_CloseFile ( CriFsStdioHn  stdhn)

ANSI C に準じたファイルクローズ

引数
[in]stdhnクローズするファイルのCriFsStdioハンドル
戻り値
CriError エラーコード
説明:
指定したファイルをクローズします。
第一引数には、クローズしたいファイルのCriFsStdioハンドルを指定します。
参照
criFsStdio_OpenFile

◆ criFsStdio_GetFileSize()

CriSint64 criFsStdio_GetFileSize ( CriFsStdioHn  stdhn)

ANSI C に準じたAPIに基づくファイルサイズ取得

引数
[in]stdhnサイズを取得したいファイルのCriFsStdioハンドル
戻り値
CriSint64 指定したハンドルが有効であれば、ファイルサイズを返します。
説明:
指定したファイルのサイズを取得します。
第一引数には、サイズを取得したいファイルのCriFsStdioハンドルを指定します。

◆ criFsStdio_TellFileOffset()

CriSint64 criFsStdio_TellFileOffset ( CriFsStdioHn  stdhn)

ANSI C に準じたファイルリードオフセットの取得

引数
[in]stdhnリードオフセットを取得したいファイルのCriFsStdioハンドル
戻り値
CriSint64 指定したハンドルが有効であれば、リードオフセット(byte)を返します。
説明:
指定したファイルの読込位置を取得します。
第一引数には、読込位置を取得したいファイルの、CriFsStdioハンドルを指定します。
参照
criFsStdio_SeekFile

◆ criFsStdio_SeekFile()

CriSint64 criFsStdio_SeekFile ( CriFsStdioHn  rdr,
CriSint64  offset,
CRIFSSTDIO_SEEK_TYPE  seek_type 
)

ANSI C に準じた ファイルリードオフセットのシーク

引数
[in]rdrリードオフセットをシークしたいファイルのCriFsStdioハンドル
[in]offsetシークのオフセット(byte)
[in]seek_typeシーク開始位置の指定
戻り値
CriSint64 成功 0
失敗 -1
説明:
指定したファイルのリードオフセットをシークします。
第一引数には、リードオフセットをシークしたいファイルの、CriFsStdioハンドルを指定します。
第二引数には、シークのオフセットを指定します。単位はbyteです。
注意
ファイル先頭より手前にシークすることは出来ません。ファイルリードオフセットがファイル先頭より 手前になるようシークオフセットを指定した場合、シーク結果のファイルリードオフセットはファイル先頭になります。
一方、ファイル終端を超えたシークは可能です。
また、指定のCriFsStdioハンドルが中間バッファーを持つ場合、 本関数で中間バッファーの有効範囲外にシークすると、中間バッファーの内容が破棄されます。
参照
criFsStdio_TellFileOffset
criFsStdio_SetInterstageBuffer

◆ criFsStdio_SetInterstageBuffer()

CriSint64 criFsStdio_SetInterstageBuffer ( CriFsStdioHn  stdhn,
CriUint8 *  temp_buffer,
CriUint32  temp_buffer_size 
)

ANSI C に準じたAPIに基づくファイル読込用中間バッファーの設定

引数
[in]stdhn中間バッファーを設定したいCriFsStdioハンドル
[in]temp_buffer中間バッファーの先頭アドレス
[in]temp_buffer_size中間バッファーのサイズ(byte)
戻り値
CriSint64 中間バッファー設定後のファイル読込位置
説明:
指定したファイルを読み込む際の中間バッファーを設定します。
第一引数には、中間バッファーを設定したいCriFsStdioハンドルを指定します。
第二引数には、中間バッファーとして利用するメモリ領域の先頭アドレスを指定します。 NULLを指定した場合、中間バッファーを使いません。
第三引数には、中間バッファーのサイズを指定します。単位はbyteです。 0を指定した場合、第二引数に有効なアドレスを指定していても、中間バッファーを使いません。
注意
criFsStdio_OpenFile()で得られたファイルハンドルは、デフォルトでは中間バッファーを持ちません。
中間バッファーが必要な場合、本関数で設定する必要があります。
中間バッファーを設定すると、最大で temp_buffer_size 分のデータをファイルから 中間バッファーへ読み込むようになります。
中間バッファー内にデータがある限り、 criFsStdio_ReadFile()によるファイル読込はメモリコピーになるため、 連続して細かいファイル読込を行う場合 物理的なファイルアクセスの発生頻度を抑えることができます。
ただし、criFsStdio_SeekFile()で中間バッファーの有効範囲外にシークすると、 中間バッファーの内容が破棄されます。
参照
criFsStdio_TellFileOffset
criFsStdio_SeekFile
criFsStdio_OpenFile
criFsStdio_ReadFile

◆ criFsStdio_ReadFile()

CriSint64 criFsStdio_ReadFile ( CriFsStdioHn  stdhn,
CriSint64  rsize,
void *  buf,
CriSint64  bsize 
)

ANSI C に準じたAPIに基づくファイルからのデータ読込

引数
[in]stdhn読込元のCriFsStdioハンドル
[in]rsize読込要求サイズ(byte)
[in]buf読込先バッファー
[in]bsize読込先バッファーのサイズ(byte)
戻り値
CriSint64 読込成功 読み込めたサイズ(byte)
読込失敗 -1
説明:
ファイルからデータを指定サイズ(byte)分読み込みます。
第一引数には、データの読込元であるファイルのCriFsStdioハンドルを指定します。
第二引数には、読み込むサイズを指定します。
第三引数には、読み込んだデータの書き込み先バッファーを指定します。
第四引数には、読み込んだデータの書き込み先バッファーサイズを指定します。
注意
戻り値は、常に読込要求サイズ以下になることに注意してください。
例えばファイル終端では、戻り値が読込要求サイズより小さくなることがありますが、 読込に失敗しているわけではありません。読込に失敗した場合、-1を返します。

◆ criFsStdio_WriteFile()

CriSint64 criFsStdio_WriteFile ( CriFsStdioHn  stdhn,
CriSint64  rsize,
void *  buf,
CriSint64  bsize 
)

ANSI C に準じたAPIに基づくデータのファイル書込

引数
[in]stdhn書込先のCriFsStdioハンドル
[in]rsize書込要求サイズ(byte)
[in]buf書込元バッファー
[in]bsize書込元バッファーのサイズ(byte)
戻り値
CriSint64 書込成功 書き込めたサイズ(byte)
書込失敗 -1
説明:
ファイルからデータを指定サイズ(byte)分読み込みます。
第一引数には、データの書込先であるファイルのCriFsStdioハンドルを指定します。
第二引数には、書き込むサイズを指定します。
第三引数には、書込元となるデータのバッファーを指定します。
第四引数には、書込元となるデータのバッファーサイズを指定します。
注意
戻り値は、書込に成功したサイズ(byte)です。
書込に失敗した場合、-1を返します。 本関数は、ファイル書き込みをサポートしているプラットフォームにおいてのみ使用することができます。
ファイル書き込みをサポートしていないプラットフォームで本関数を呼び出すと、
リンク時にシンボルが見つからず、ビルドエラーになります。

◆ criFsStdio_SetReadPriority()

CriError criFsStdio_SetReadPriority ( CriFsStdioHn  stdhn,
CriFsLoaderPriority  prio 
)

CriFsStdioハンドルのファイル読み込みプライオリティを変更

引数
[in]stdhnプライオリティを変更したいCriFsStdioハンドル
[in]prio変更したいプライオリティの値
戻り値
CriError CRIERR_OK 成功
その他 失敗
説明:
criFsStdio_ReadFile()を使ったファイル読み込み優先度を、CriFsStdioハンドル毎に設定します。

◆ criFsStdio_RemoveFile()

CriError criFsStdio_RemoveFile ( CriFsBinderHn  binder,
const CriChar8 *  path,
CriFsStdioRemoveResult *  result 
)

ファイルの削除

引数
[in]binder削除したいファイルがバインドされているCriFsBinderのハンドル
[in]path削除するファイルのパス
[out]result削除結果
戻り値
CriError エラーコード
説明:
指定したファイルを削除します。
ファイルの削除に成功した場合、出力値( result )に CRIFSSTDIO_FILE_REMOVED がセットされます。
指定したファイルが存在しない場合や、読み込み専用ファイルを削除しようとした場合、 ファイルの削除に失敗し、出力値( result )に CRIFSSTDIO_IO_ERROR_OCCURRD がセットされます。
本関数は、ファイル書き込みをサポートしているプラットフォームにおいてのみ使用することができます。
備考:
指定した引数が不正な場合や、ファイル削除用のハンドルが確保できない場合、 出力値( result )に CRIFSSTDIO_NOT_EXECUTED がセットされ、 関数の戻り値がエラー値( CRIERR_OK 以外の値)になります。