CRI ADX  Last Updated: 2024-03-21 14:32 p
cri_file_system.h ファイル
#include "cri_xpt.h"
#include "cri_error.h"

データ構造

struct  CriFsConfigTag
 コンフィギュレーション [詳解]
 
struct  CriFsDeviceInfoTag
 デバイス情報 [詳解]
 
struct  CriFsIoInterfaceTag
 I/Oインターフェイス [詳解]
 
struct  CriFsBinderFileInfoTag
 ファイル情報構造体 [詳解]
 
struct  CriFsBinderContentsFileInfoTag
 コンテンツファイル情報構造体 [詳解]
 
struct  CriFsBinderInfoTag
 バインダー情報 [詳解]
 
struct  CriFsGroupFileInfoTag
 グループファイル情報構造体 [詳解]
 

マクロ定義

#define CRIFS_CONFIG_DEFAULT_THREAD_MODEL   CRIFS_THREAD_MODEL_MULTI
 コンフィギュレーションのデフォルト値
 
#define CRIFS_DEVICE_DEFAULT   (CRIFS_DEVICE_00)
 デフォルトデバイスID
 
#define CRIFS_DEVICE_MEMORY   (CRIFS_DEVICE_07)
 メモリファイルシステムデバイスID
 
#define CRIFS_DEFAULT_DEVICE   (CRIFS_DEVICE_DEFAULT)
 デフォルトデバイスID旧定義 [詳解]
 
#define CRIFS_MAX_MEMORY_FILE_PATH   (44)
 メモリファイルパスの最大長 [詳解]
 
#define CRIFSBINDER_BID_NULL   (0)
 無効なバインドID [詳解]
 
#define CRIFSBINDER_BID_START   (1)
 有効バインドIDの開始番号 [詳解]
 
#define criFs_SetUserAllocator(p_malloc_func, p_free_func, p_obj)
 ユーザーアロケーターの登録 [詳解]
 
#define CRIFS_GROUPLOADER_NO_PREPARATION_LIMIT   0
 準備ファイル数の制限を設定するAPIで「無制限」を示す特別値 [詳解]
 
#define CRIFS_LOADLIMITER_SIZE_UNLIMITED   0x7FFFFFFF
 ロードリミッタサイズの「リミッタ制限なし」を示す特別値 [詳解]
 
#define CRIFS_LOADLIMITER_SIZE_DEFAULT   CRIFS_LOADLIMITER_SIZE_UNLIMITED
 ロードリミッタサイズのデフォルト値(リミッタ制限なし) [詳解]
 
#define CRIFS_READ_REQUEST_NUM_UNLIMITED   0x7FFFFFFF
 リード要求回数の「制限なし」を示す特別値(デフォルト値)
 
#define criFs_SetDefaultConfig(p_config)
 デフォルトコンフィギュレーションのセット [詳解]
 
#define criFs_BeginLoadRegion(name)   criFs_BeginGroup(name, NULL)
 ロード区間の開始 [詳解]
 
#define criFs_EndLoadRegion()   criFs_EndGroup()
 ロード区間の終了 [詳解]
 

型定義

typedef enum CriFsThreadModelTag CriFsThreadModel
 スレッドモデル [詳解]
 
typedef struct CriFsConfigTag CriFsConfig
 コンフィギュレーション [詳解]
 
typedef enum CriFsOpenRetryModeTag CriFsOpenRetryMode
 ファイルオープンエラー発生時のリトライ方法
 
typedef enum CriFsReadRetryModeTag CriFsReadRetryMode
 ファイルリードエラー発生時のリトライ方法
 
typedef enum CriFsDefaultPathSeparatorTag CriFsDefaultPathSeparator
 デフォルトのパス区切り文字の設定
 
typedef enum CriFsFileIoModeTag CriFsFileIoMode
 ファイルI/Oモードの設定
 
typedef void *(* CriFsMallocFunc) (void *obj, CriUint32 size)
 メモリ確保関数 [詳解]
 
typedef void(* CriFsFreeFunc) (void *obj, void *mem)
 メモリ解放関数 [詳解]
 
typedef CriSint32 CriFsFileId
 CPKコンテンツファイルID [詳解]
 
typedef enum CriFsDeviceIdTag CriFsDeviceId
 デバイスID
 
typedef struct CriFsDeviceInfoTag CriFsDeviceInfo
 デバイス情報
 
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 CriFsBinderContentsFileInfoTag CriFsBinderContentsFileInfo
 コンテンツファイル情報構造体 [詳解]
 
typedef struct CriFsBinderInfoTag CriFsBinderInfo
 バインダー情報 [詳解]
 
typedef struct CriFsLoaderObjTag * CriFsLoaderHn
 CriFsLoaderハンドル
 
typedef void(* CriFsLoaderLoadEndCbFunc) (void *obj, CriFsLoaderHn loader)
 ロード終了コールバック関数
 
typedef CriError(* CriFsInplaceDecryptionCbFunc) (void *user_data, CriUint8 *data, CriUint64 data_size)
 
typedef struct CriFsGroupFileInfoTag CriFsGroupFileInfo
 グループファイル情報構造体 [詳解]
 
typedef void *(* CriFsGroupLoaderLoadStartCbFunc) (void *obj, const CriFsGroupFileInfo *gfinfo)
 グループロードコールバック関数 [詳解]
 
typedef void(* CriFsLogOutputFunc) (void *obj, const char *format,...)
 ログ出力関数
 

列挙型

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  CriFsOpenRetryModeTag { CRIFS_OPEN_RETRY_NONE = 0 , CRIFS_OPEN_RETRY_INFINITE = -1 , CRIFS_OPEN_RETRY_ENUM_BE_SINT32 = 0x7FFFFFFF }
 ファイルオープンエラー発生時のリトライ方法 [詳解]
 
enum  CriFsReadRetryModeTag { CRIFS_READ_RETRY_NONE = 0 , CRIFS_READ_RETRY_INFINITE = -1 , CRIFS_READ_RETRY_ENUM_BE_SINT32 = 0x7FFFFFFF }
 ファイルリードエラー発生時のリトライ方法 [詳解]
 
enum  CriFsDefaultPathSeparatorTag { CRIFS_DEFAULT_PATH_SEPARATOR_PLATFORM_COMPATIBLE = 0 , CRIFS_DEFAULT_PATH_SEPARATOR_NONE = 1 , CRIFS_DEFAULT_PATH_SEPARATOR_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_OPEN_WITHOUT_DECRYPTING = 10 , 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  CriFsBinderKind {
  CRIFSBINDER_KIND_NONE = 0 , CRIFSBINDER_KIND_DIRECTORY , CRIFSBINDER_KIND_CPK , CRIFSBINDER_KIND_FILE ,
  CRIFSBINDER_KIND_FILES , CRIFSBINDER_KIND_FILE_SECTION , CRIFSBINDER_KIND_SYSTEM , CRIFSBINDER_KIND_ENUM_BE_SINT32 = 0x7FFFFFFF
}
 バインド種別 [詳解]
 
enum  CriFsBindCpkError { CRIFS_BINDCPK_ERROR_NONE = 0 , CRIFS_BINDCPK_ERROR_DATA , CRIFS_BINDCPK_ERROR_CANNOT_READ , CRIFS_BINDCPK_ERROR_NONEXISTENT , CRIFS_BINDCPK_ENUM_BE_SINT32 = 0x7FFFFFFF }
 Cpkバインドエラー無効時のエラー種別 [詳解]
 
enum  CriFsLoaderStatus { CRIFSLOADER_STATUS_STOP , CRIFSLOADER_STATUS_LOADING , CRIFSLOADER_STATUS_COMPLETE , CRIFSLOADER_STATUS_ERROR , CRIFSLOADER_STATUS_ENUM_BE_SINT32 = 0x7FFFFFFF }
 ロードステータス [詳解]
 
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  CriFsLogOutputMode
 アクセスログ出力モード
 
enum  CRIFSSTDIO_SEEK_TYPE { CRIFSSTDIO_SEEK_SET = 0 , CRIFSSTDIO_SEEK_CUR = 1 , CRIFSSTDIO_SEEK_END = 2 , CRIFSSTDIO_SEEK_ENUM_BE_SINT32 = 0x7FFFFFFF }
 ファイル上のシーク開始位置 [詳解]
 
enum  CriFsStdioRemoveResult { CRIFSSTDIO_NOT_EXECUTED = 0 , CRIFSSTDIO_FILE_REMOVED = 1 , CRIFSSTDIO_IO_ERROR_OCCURRD =2 , CRIFSSTDIO_REMOVE_RESULT_ENUM_IS_4BYTE = 0x7FFFFFFF }
 ファイル削除結果 [詳解]
 
enum  CriFsLoadLimiterNo
 ロードリミッタ番号 [詳解]
 

関数

CriError criFs_CalculateWorkSizeForLibrary (const CriFsConfig *config, CriSint32 *nbyte)
 ワーク領域サイズの計算 [詳解]
 
CriError criFs_InitializeLibrary (const CriFsConfig *config, void *buffer, CriSint32 size)
 CRI File Systemの初期化 [詳解]
 
CriError criFs_FinalizeLibrary (void)
 CRI File Systemの終了 [詳解]
 
CriError criFs_SetConfigForWorkSizeCalculation (const CriFsConfig *config)
 ワーク領域サイズ計算用コンフィグ構造体の設定 [詳解]
 
void criFs_SetUserMallocFunction (CriFsMallocFunc func, void *obj)
 メモリ確保関数の登録 [詳解]
 
void criFs_SetUserFreeFunction (CriFsFreeFunc func, void *obj)
 メモリ解放関数の登録 [詳解]
 
CriError criFs_ExecuteMain (void)
 サーバー処理の実行 [詳解]
 
CriError criFs_ExecuteFileAccess (void)
 ファイルアクセス処理の実行(非スレッド時環境向け) [詳解]
 
CriError criFs_ExecuteDataDecompression (void)
 データ展開処理の実行(非スレッド時環境向け) [詳解]
 
CriError criFs_SetOpenRetryMode (CriFsOpenRetryMode mode)
 ファイルオープンエラー発生時のリトライ方法の設定 [詳解]
 
CriError criFs_SetReadRetryMode (CriFsReadRetryMode mode)
 ファイルリードエラー発生時のリトライ方法の設定 [詳解]
 
CriError criFs_BeginGroup (const CriChar8 *groupname, const CriChar8 *attrname)
 グループ優先区間の開始 [詳解]
 
CriError criFs_EndGroup (void)
 グループ優先区間の終了 [詳解]
 
CriError criFs_GetNumUsedBinders (CriSint32 *cur_num, CriSint32 *max_num, CriSint32 *limit)
 バインダー使用数の取得 [詳解]
 
CriError criFs_GetNumUsedLoaders (CriSint32 *cur_num, CriSint32 *max_num, CriSint32 *limit)
 ローダー使用数の取得 [詳解]
 
CriError criFs_GetNumUsedGroupLoaders (CriSint32 *cur_num, CriSint32 *max_num, CriSint32 *limit)
 グループローダー使用数の取得 [詳解]
 
CriError criFs_GetNumUsedStdioHandles (CriSint32 *cur_num, CriSint32 *max_num, CriSint32 *limit)
 CriFsStdioハンドル使用数の取得 [詳解]
 
CriError criFs_GetNumUsedInstallers (CriSint32 *cur_num, CriSint32 *max_num, CriSint32 *limit)
 インストーラー使用数の取得 [詳解]
 
CriError criFs_GetNumBinds (CriSint32 *cur_num, CriSint32 *max_num, CriSint32 *limit)
 バインド数の取得 [詳解]
 
CriError criFs_GetNumOpenedFiles (CriSint32 *cur_num, CriSint32 *max_num, CriSint32 *limit)
 オープンされたファイル数の取得 [詳解]
 
CriError criFs_SetSelectIoCallback (CriFsSelectIoCbFunc func)
 I/O選択コールバックの登録 [詳解]
 
CriError criFs_GetDefaultIoInterface (CriFsIoInterfacePtr *ioif)
 デフォルトI/Oインターフェイスの取得 [詳解]
 
CriError criFs_SetReadDeviceEnabled (CriFsDeviceId id, CriBool enabled)
 
CriError criFs_GetDeviceInfo (CriFsDeviceId id, CriFsDeviceInfo *info)
 デバイス情報の取得 [詳解]
 
CriError criFs_SetDeviceInfo (CriFsDeviceId id, CriFsDeviceInfo info)
 デバイス情報の設定 [詳解]
 
CriError criFs_AddressToPath (const void *buffer, CriSint64 buffer_size, CriChar8 *path, CriSint32 length)
 メモリファイルパスの作成 [詳解]
 
CriError criFs_SetMemoryFileSystemSyncCopyLimit (CriSint64 limit)
 メモリファイルシステム用同期コピーサイズ上限の設定 [詳解]
 
CriError criFs_SetLoadLimiterSize (CriFsLoadLimiterNo limiter_no, CriSint32 limiter_size)
 ロードリミッタのサイズの設定 [詳解]
 
CriError criFs_SetLoadLimiterUnit (CriFsLoadLimiterNo limiter_no, CriSint32 limiter_unit)
 ロードリミッタの単位サイズの設定 [詳解]
 
CriError criFs_LimitNumReadRequest (CriSint32 limit_num_read_request)
 リード要求回数の制限 [詳解]
 
CriError criFs_SetDefaultPathSeparator (CriFsDefaultPathSeparator default_path_separator)
 デフォルトパス区切り文字の設定 [詳解]
 
CriError criFs_ControlFileIoMode (CriFsFileIoMode io_mode)
 ファイルI/Oモードの設定 [詳解]
 
CriError criFs_SetFileAccessThreadStackSize (CriUint32 size)
 ファイルアクセススレッドのスタックサイズ設定 [詳解]
 
CriError criFsBinder_SetUserHeapFunc (CriFsMallocFunc allocfunc, CriFsFreeFunc freefunc, void *obj)
 CRI File System - Binder オブジェクト [詳解]
 
CriError criFsBinder_Create (CriFsBinderHn *bndrhn)
 バインダーの生成 [詳解]
 
CriError criFsBinder_Destroy (CriFsBinderHn bndrhn)
 バインダーの破棄 [詳解]
 
CriError criFsBinder_GetWorkSizeForBindCpk (CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
 CPKファイルバインドのワークサイズ取得 [詳解]
 
CriError criFsBinder_AnalyzeWorkSizeForBindCpk (CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 wksize, CriSint32 *rqsize)
 CPKバインドに必要なワーク領域サイズの取得 [詳解]
 
CriError criFsBinder_GetWorkSizeForBindFile (CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
 ファイルバインドのワークサイズの取得 [詳解]
 
CriError criFsBinder_GetWorkSizeForBindFiles (CriFsBinderHn srcbndrhn, const CriChar8 *filelist, CriSint32 *worksize)
 複数ファイルバインドのワークサイズの取得 [詳解]
 
CriError criFsBinder_GetWorkSizeForBindFileSection (CriFsBinderHn srcbndrhn, const CriChar8 *path, const CriChar8 *section_name, CriSint32 *worksize)
 ファイルセクションバインドのワークサイズの取得 [詳解]
 
CriError criFsBinder_GetWorkSizeForBindDirectory (CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
 ディレクトリバインドのワークサイズの取得 [詳解]
 
CriError criFsBinder_BindCpk (CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
 Cpkファイルのバインド [詳解]
 
CriError criFsBinder_BindFile (CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
 ファイルのバインド [詳解]
 
CriError criFsBinder_BindFiles (CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *filelist, 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_BindDirectory (CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
 ディレクトリパスのバインド [詳解]
 
CriError criFsBinder_Unbind (CriFsBindId bndrid)
 バインドIDの削除(アンバインド):完了復帰関数 [詳解]
 
CriError criFsBinder_UnbindAsync (CriFsBindId bndrid)
 バインドIDの削除(アンバインド):即時復帰関数 [詳解]
 
CriError criFsBinder_CleanImplicitUnbindList (void)
 暗黙的アンバインドリストのクリア [詳解]
 
CriError criFsBinder_GetStatus (CriFsBindId bndrid, CriFsBinderStatus *status)
 バインド状態の取得 [詳解]
 
CriError criFsBinder_Find (CriFsBinderHn bndrhn, const CriChar8 *filepath, CriFsBinderFileInfo *finfo, CriBool *exist)
 ファイル情報の取得(ファイル名指定) [詳解]
 
CriError criFsBinder_FindById (CriFsBinderHn bndrhn, CriFsFileId id, CriFsBinderFileInfo *finfo, CriBool *exist)
 ファイル情報の取得(ID指定) [詳解]
 
CriError criFsBinder_GetHandle (CriFsBindId bndrid, CriFsBinderHn *bndrhn)
 CriFsBinderHnの取得 [詳解]
 
CriError criFsBinder_GetFileSize (CriFsBinderHn bndrhn, const CriChar8 *filepath, CriSint64 *size)
 ファイルサイズの取得(ファイル名指定) [詳解]
 
CriError criFsBinder_GetFileSizeById (CriFsBinderHn bndrhn, CriFsFileId id, CriSint64 *size)
 ファイルサイズの取得(ID指定) [詳解]
 
CriError criFsBinder_GetRomAddress (CriFsBinderHn bndrhn, const CriChar8 *filepath, CriUint64Adr *rom_address)
 ROMアドレスの取得(ファイル名指定) [詳解]
 
CriError criFsBinder_GetRomAddressById (CriFsBinderHn bndrhn, CriFsFileId id, CriUint64Adr *rom_address)
 ROMアドレスの取得(ID指定) [詳解]
 
CriError criFsBinder_GetPriority (CriFsBindId bndrid, CriSint32 *priority)
 プライオリティ値の取得 [詳解]
 
CriError criFsBinder_SetPriority (CriFsBindId bndrid, CriSint32 priority)
 プライオリティ値の設定 [詳解]
 
CriError criFsBinder_SetCurrentDirectory (CriFsBindId bndrId, const CriChar8 *path, void *work, CriSint32 worksize)
 カレントディレクトリの設定 [詳解]
 
CriError criFsBinder_GetContentsFileInfo (CriFsBinderHn bndrhn, const CriChar8 *path, CriFsBinderContentsFileInfo *cfinf)
 CPKコンテンツファイル情報の取得 [詳解]
 
CriError criFsBinder_GetContentsFileInfoById (CriFsBinderHn bndrhn, CriFsFileId id, CriFsBinderContentsFileInfo *cfinf)
 CPKコンテンツファイル情報の取得 [詳解]
 
CriError criFsBinder_GetContentsFileInfoByIndex (CriFsBindId bndrid, CriSint32 index, CriFsBinderContentsFileInfo *cfinf, CriSint32 n)
 Index指定によるCPKコンテンツファイル情報の取得 [詳解]
 
CriError criFsBinder_GetContentsFileUserString (CriFsBinderHn bndrhn, const CriChar8 *path, CriChar8 *ustr, CriSint32 length)
 CPKコンテンツファイル情報に含まれるユーザー文字列の取得 [詳解]
 
CriError criFsBinder_GetContentsFileUserStringById (CriFsBinderHn bndrhn, CriFsFileId id, CriChar8 *ustr, CriSint32 length)
 CPKコンテンツファイル情報に含まれるユーザー文字列の取得 (ID指定) [詳解]
 
CriError criFsBinder_GetBinderIdInfo (CriFsBindId bndrid, CriFsBinderInfo *binf)
 バインドID情報の取得 [詳解]
 
CriError criFsBinder_GetNumberOfGroupFiles (CriFsBindId bndrid, const CriChar8 *groupname, const CriChar8 *attrname, CriSint32 *groupfiles)
 グループファイル数の取得 [詳解]
 
CriError criFsBinder_GetTotalGroupDataSize (CriFsBindId bndrid, const CriChar8 *groupname, const CriChar8 *attrname, CriSint64 *datasize)
 グループロードサイズの取得 [詳解]
 
CriError criFsBinder_GetWorkSizeForCpkIdAccessTable (CriFsBindId bindrid, CriSint32 steps, CriSint32 *worksize)
 ID情報付CPKのアクセス情報テーブル作成用ワークサイズ取得 [詳解]
 
CriError criFsBinder_SetupCpkIdAccessTable (CriFsBindId binderid, CriSint32 steps, void *work, CriSint32 worksize)
 ID情報付CPK アクセス情報テーブルの作成 [詳解]
 
CriError criFsBinder_CloseFile (CriFsBindId bind_id, CriFsLoaderStatus *internal_loader_status)
 バインド中のファイルの一時クローズ [詳解]
 
CriError criFsBinder_ReopenFile (CriFsBindId bind_id, CriFsLoaderStatus *internal_loader_status)
 一時クローズファイルの再オープン [詳解]
 
CriError criFsBinder_CloseFileAsync (CriFsBindId bind_id, CriFsLoaderHn *internal_loader)
 バインド中のファイルの一時クローズ [詳解]
 
CriError criFsBinder_ReopenFileAsync (CriFsBindId bind_id, CriFsLoaderHn *internal_loader)
 一時クローズファイルの再オープン [詳解]
 
CriError criFsBinder_CompleteAsyncFileReopen (CriFsBindId bind_id)
 一時クローズファイルの再オープン反映 [詳解]
 
CriError criFsBinder_SetPathSeparatorForBindFiles (const CriChar8 *filter)
 複数ファイルバインド用パスセパレータの指定 [詳解]
 
CriError criFsLoader_Create (CriFsLoaderHn *loader)
 CRI File System - Loader オブジェクト [詳解]
 
CriError criFsLoader_GetWorkSize (CriSint32 *work_size)
 ローダー作成用ワーク領域サイズの取得 [詳解]
 
CriError criFsLoader_CreateWithWork (CriFsLoaderHn *loader, void *work, CriSint32 work_size)
 CriFsLoaderの作成 [詳解]
 
CriError criFsLoader_Destroy (CriFsLoaderHn loader)
 CriFsLoaderの破棄 [詳解]
 
CriError criFsLoader_SetLoadEndCallback (CriFsLoaderHn loader, CriFsLoaderLoadEndCbFunc func, void *obj)
 ロード完了コールバックの登録 [詳解]
 
CriError criFsLoader_SetInplaceDecryptionCbFunc (CriFsLoaderHn loader, CriFsInplaceDecryptionCbFunc func, void *obj)
 
CriError criFsLoader_Load (CriFsLoaderHn loader, CriFsBinderHn binder, const CriChar8 *path, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
 データのロード [詳解]
 
CriError criFsLoader_LoadById (CriFsLoaderHn loader, CriFsBinderHn binder, CriFsFileId id, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
 データのロード (CPKファイル内のファイルIDを指定) [詳解]
 
CriError criFsLoader_LoadWithoutDecompression (CriFsLoaderHn loader, CriFsBinderHn binder, const CriChar8 *path, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
 圧縮データを展開せずにメモリ上にロード [詳解]
 
CriError criFsLoader_LoadWithoutDecompressionById (CriFsLoaderHn loader, CriFsBinderHn binder, CriFsFileId id, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
 圧縮データを展開せずにメモリ上にロード(CPKファイル内のファイルIDを指定) [詳解]
 
CriError criFsLoader_DecompressData (CriFsLoaderHn loader, void *src, CriSint64 src_size, void *dst, CriSint64 dst_size)
 メモリ上に配置された圧縮データの展開 [詳解]
 
CriError criFsLoader_Stop (CriFsLoaderHn loader)
 ロードの停止 [詳解]
 
CriError criFsLoader_GetStatus (CriFsLoaderHn loader, CriFsLoaderStatus *status)
 ロードステータスの取得 [詳解]
 
CriError criFsLoader_GetIoError (CriFsLoaderHn loader, CriFsIoError *io_err)
 I/Oエラーコードの取得 [詳解]
 
CriError criFsLoader_GetLoadSize (CriFsLoaderHn loader, CriSint64 *size)
 ロードサイズの取得 [詳解]
 
CriError criFsLoader_GetProgress (CriFsLoaderHn loader, CriSint64 *progress, CriSint64 *request_size)
 ロード進行状況の取得 [詳解]
 
CriError criFsLoader_GetPriority (CriFsLoaderHn loader, CriFsLoaderPriority *prio)
 プライオリティの取得 [詳解]
 
CriError criFsLoader_SetPriority (CriFsLoaderHn loader, CriFsLoaderPriority prio)
 プライオリティの設定 [詳解]
 
CriError criFsLoader_SetReadUnitSize (CriFsLoaderHn loader, CriSint64 unit_size)
 単位読み込みサイズの設定 [詳解]
 
CriError criFsLoader_SetLoadLimiter (CriFsLoaderHn loader, CriFsLoadLimiterNo limiter_no)
 ロードリミッタ番号の設定 [詳解]
 
CriError criFsGroupLoader_Create (CriFsBindId binder_id, const CriChar8 *groupname, const CriChar8 *attrname, CriFsGroupLoaderHn *grouploaderhn)
 CRI File System - Group Loader オブジェクト [詳解]
 
CriError criFsGroupLoader_CreateFromBinderHn (CriFsBinderHn bndrhn, const CriChar8 *groupname, const CriChar8 *attrname, CriFsGroupLoaderHn *grouploaderhn)
 バインダーハンドル対応のグループローダーの作成 [詳解]
 
CriError criFsGroupLoader_Destroy (CriFsGroupLoaderHn grouploaderhn)
 グループローダーの破棄 [詳解]
 
CriError criFsGroupLoader_SetLoadStartCallback (CriFsGroupLoaderHn grouploaderhn, CriFsGroupLoaderLoadStartCbFunc func, void *obj)
 ロード開始コールバック関数の設定 [詳解]
 
CriError criFsGroupLoader_GetNumberOfGroupFiles (CriFsGroupLoaderHn grouploaderhn, CriSint32 *nfiles)
 グループファイル数の取得 [詳解]
 
CriError criFsGroupLoader_GetTotalGroupDataSize (CriFsGroupLoaderHn grouploaderhn, CriSint64 *datasize)
 グループデータサイズの取得 [詳解]
 
CriError criFsGroupLoader_GetGroupFileInfos (CriFsGroupLoaderHn grouploaderhn, CriFsGroupFileInfo gfinf[], CriSint32 numgfinf)
 グループファイル情報の取得 [詳解]
 
CriError criFsGroupLoader_LoadBulk (CriFsGroupLoaderHn gourploaderhn, void *buffer, CriSint64 buffer_size, CriFsGroupFileInfo gfinf[], CriSint32 numgfinf)
 グループロードの開始 [詳解]
 
CriError criFsGroupLoader_Stop (CriFsGroupLoaderHn grouploaderhn)
 グループロードの停止(中断) [詳解]
 
CriError criFsGroupLoader_GetStatus (CriFsGroupLoaderHn grouploaderhn, CriFsLoaderStatus *status)
 ロードステータスの取得 [詳解]
 
CriError criFsGroupLoader_GetLoadedFiles (CriFsGroupLoaderHn grouploaderhn, CriSint32 *nfiles)
 ロードされたファイル数の取得 [詳解]
 
CriError criFsGroupLoader_IsLoaded (const CriFsGroupFileInfo *gfinfo, CriBool *result)
 ファイルの読込状態の取得 [詳解]
 
CriError criFsGroupLoader_GetGroupFileInfoIndex (CriFsGroupLoaderHn grouploaderhn, const CriChar8 *fpath, CriSint32 *index)
 CriFsGroupFileInfo構造体の配列インデクスの取得 [詳解]
 
CriError criFsGroupLoader_GetGroupFileInfoIndexById (CriFsGroupLoaderHn grouploaderhn, CriFsFileId id, CriSint32 *index)
 CriFsGroupFileInfo構造体の配列インデクスの取得(ID指定) [詳解]
 
CriError criFsGroupLoader_GetGroupFileInfo (CriFsGroupLoaderHn grouploaderhn, const CriChar8 *fpath, const CriFsGroupFileInfo **gfinfo)
 CriFsGroupFileInfo構造体の取得 [詳解]
 
CriError criFsGroupLoader_GetGroupFileInfoById (CriFsGroupLoaderHn grouploaderhn, CriFsFileId id, const CriFsGroupFileInfo **gfinfo)
 CriFsGroupFileInfo構造体の取得(ID指定) [詳解]
 
CriError criFsGroupLoader_GetGroupName (CriFsGroupLoaderHn grouploaderhn, const CriChar8 **groupname)
 グループ名の取得 [詳解]
 
CriError criFsGroupLoader_GetAttributeName (CriFsGroupLoaderHn grouploaderhn, const CriChar8 **attrname)
 グループ属性の取得 [詳解]
 
CriError criFsGroupLoader_GetLoaderPriority (CriFsGroupLoaderHn grouploaderhn, CriFsLoaderPriority *prio)
 プライオリティの取得 [詳解]
 
CriError criFsGroupLoader_SetLoaderPriority (CriFsGroupLoaderHn grouploaderhn, CriFsLoaderPriority prio)
 プライオリティの設定 [詳解]
 
CriError criFsGroupLoader_SetReadUnitSize (CriFsGroupLoaderHn grouploaderhn, CriSint64 unit_size)
 単位読み込みサイズの設定 [詳解]
 
CriError criFsGroupLoader_SetLoadLimiter (CriFsGroupLoaderHn grouploaderhn, CriFsLoadLimiterNo limiter_no)
 ロードリミッタ番号の設定 [詳解]
 
CriError criFsGroupLoader_LimitNumPreparingFiles (CriFsGroupLoaderHn grouploaderhn, CriSint32 nfile_per_server)
 サーバー処理当たりの準備ファイル数の制限 [詳解]
 
CriError criFsGroupLoader_GetGroupFileInfoStartOffset (CriFsGroupLoaderHn group_all, CriFsGroupLoaderHn group_attr, CriSint32 *offset)
 特定アトリビュートのCriFsGroupFileInfo構造体配列の開始オフセットの取得 [詳解]
 
void criFsGroupLoader_SetUseLoadedFlag (CriBool use_flag)
 単一ファイルのロード確認の設定 [詳解]
 
CriError criFs_AttachLogOutput (CriFsLogOutputMode mode, void *param)
 ログ出力機能の追加 [詳解]
 
CriError criFs_DetachLogOutput (void)
 ログ出力機能の削除 [詳解]
 
CriError criFs_SetUserLogOutputFunction (CriFsLogOutputFunc func, void *obj)
 ユーザー定義ログ出力関数の登録 [詳解]
 
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_MAX_MEMORY_FILE_PATH

#define CRIFS_MAX_MEMORY_FILE_PATH   (44)

メモリファイルパスの最大長

説明:
メモリファイルパスの最大長です。NULL文字分を含みます。
メモリファイルパス長がこの数値を超過することはありません。
注意
この値は、将来大きくなる可能性があります。
参照
criFs_AddressToPath

◆ CRIFSBINDER_BID_NULL

#define CRIFSBINDER_BID_NULL   (0)

無効なバインドID

説明:
未使用バインダーに与えられるIDです。バインドに失敗した時にも返ってくることがあります。
参照
CriFsBindId, criFsBinder_BindCpk, criFsBinder_BindFile, criFsBinder_BindFiles, criFsBinder_BindDirectory

◆ CRIFSBINDER_BID_START

#define CRIFSBINDER_BID_START   (1)

有効バインドIDの開始番号

説明:
有効なバインドIDの開始番号です。
各種バインド関数で返すIDがこのIDよりも大きければ有効です。
参照
CriFsBindId, criFsBinder_BindCpk, criFsBinder_BindFile, criFsBinder_BindFiles, criFsBinder_BindDirectory

◆ 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_GROUPLOADER_NO_PREPARATION_LIMIT

#define CRIFS_GROUPLOADER_NO_PREPARATION_LIMIT   0

準備ファイル数の制限を設定するAPIで「無制限」を示す特別値

説明:
criFsGroupLoader_LimitNumPreparingFiles 関数でこの値を指定した場合や、 criFsGroupLoader_LimitNumPreparingFiles 関数を使用しない場合、準備処理は criFsGroupLoader_LoadBulk 関数内で完結させます。
参照
criFsGroupLoader_LimitNumPreparingFiles()

◆ CRIFS_LOADLIMITER_SIZE_UNLIMITED

#define CRIFS_LOADLIMITER_SIZE_UNLIMITED   0x7FFFFFFF

ロードリミッタサイズの「リミッタ制限なし」を示す特別値

説明:
 リミッタ0番のリミッタサイズは、固定的に「リミッタ制限なし」となっています。
 リミッタ1番のリミッタサイズは、初期値が「リミッタ制限なし」となっています。
注意
ゲーム機向けではロードリミッタ機能は非サポートです。

◆ CRIFS_LOADLIMITER_SIZE_DEFAULT

#define CRIFS_LOADLIMITER_SIZE_DEFAULT   CRIFS_LOADLIMITER_SIZE_UNLIMITED

ロードリミッタサイズのデフォルト値(リミッタ制限なし)

注意
ゲーム機向けではロードリミッタ機能は非サポートです。

◆ 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_file_system.h:98

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

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

◆ criFs_BeginLoadRegion

#define criFs_BeginLoadRegion (   name)    criFs_BeginGroup(name, NULL)

ロード区間の開始

引数
[in]nameロード区間名
戻り値
CriError エラーコード
説明:
ロード区間の開始を宣言します。
criFs_AttachLogOutput 関数でファイルアクセスログの出力を有効にしている場合、本関数の引数(name)で指定したロード区間名がログに出力されます。
ロード区間は、ファイルを最適に配置するための目安として使用されます。
CPK File Builderでファイルアクセスログからグループを作成する場合、本関数で定義したロード区間がグループに変換されます。
(同一ロード区間内でロードするファイル同士は、最適配置時に近い場所に配置される可能性が高くなります。)
注意
複数のロード区間を重複させることはできません。
本関数を実行後、必ず対になる criFs_EndLoadRegion 関数を実行してください。 本関数と criFs_BeginGroup 関数を併用することはできません。
(CRI File System Ver.2.02.00より、本関数の機能が criFs_BeginGroup 関数に統合され、関数自体も criFs_BeginGroup 関数を呼び出すマクロに変更されました。)
参照
criFs_EndLoadRegion, criFs_BeginGroup

◆ criFs_EndLoadRegion

#define criFs_EndLoadRegion ( )    criFs_EndGroup()

ロード区間の終了

戻り値
CriError エラーコード
説明:
ロード区間の終了を宣言します。
注意
本関数と criFs_EndGroup 関数を併用することはできません。
(CRI File System Ver.2.02.00より、本関数の機能が criFs_EndGroup 関数に統合され、関数自体も criFs_EndGroup 関数を呼び出すマクロに変更されました。)
参照
criFs_BeginLoadRegion, criFs_EndGroup

型定義詳解

◆ CriFsThreadModel

スレッドモデル

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

◆ CriFsConfig

typedef struct CriFsConfigTag CriFsConfig

コンフィギュレーション

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

◆ CriFsFileId

typedef CriSint32 CriFsFileId

CPKコンテンツファイルID

説明:
CPKコンテンツファイルIDは、CPKファイルに格納された個々のコンテンツファイルを識別するためのものです。
ファイル名とIDの両方をもつCPKファイルは、32ビットのIDを使用することができます。 ファイル名を持たないCPKファイルは、16ビットのIDを使用することができます。 どちらの場合も、正の値を有効なIDとして使用できます。

◆ 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_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()

◆ CriFsBinderContentsFileInfo

コンテンツファイル情報構造体

説明:
criFsBinder_GetContentsFileInfoById 関数の出力情報です。
検索したCPKファイルのコンテンツファイルにアクセスするための情報を格納します。
参照
criFsBinder_GetContentsFileInfoById()

◆ CriFsBinderInfo

バインダー情報

説明:
バインダー情報取得APIの出力情報です。
参照
criFsBinder_GetBinderIdInfo()

◆ CriFsInplaceDecryptionCbFunc

typedef CriError(* CriFsInplaceDecryptionCbFunc) (void *user_data, CriUint8 *data, CriUint64 data_size)

◆ CriFsGroupFileInfo

グループファイル情報構造体

説明:
グループローダーで扱われる個々のファイルに関する情報です。

◆ CriFsGroupLoaderLoadStartCbFunc

typedef void*( * CriFsGroupLoaderLoadStartCbFunc) (void *obj, const CriFsGroupFileInfo *gfinfo)

グループロードコールバック関数

引数
[in]objユーザー登録オブジェクト
[in]gfinfo読み込むファイルの情報
戻り値
gfinfoで示されるファイルを読み込むバッファー領域へのポインター(NULL:ロードのスキップ)
説明:
グループロードコールバック関数は、グループローダー毎に設定します。
グループロード時、ロードするファイル毎にロードの直前に呼出されます。
読み込むファイルのファイル名やサイズなどのファイル情報が gfinfoで渡されます。
コールバック関数の返値はgfinfoで示されたファイルを読み込むバッファーへのポインターとなります。 この返値がNULLの場合、そのファイルは読み込まれません。
グループロードコールバック関数が設定されている場合、CPKファイルに設定されているグループ情報の 読込アドレスは使用されません。
参照
criFsGroupLoader_SetLoadStartCallback()

列挙型詳解

◆ CriFsThreadModelTag

スレッドモデル

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

マルチスレッド

説明:
ライブラリは内部でスレッドを作成し、マルチスレッドにて動作します。
スレッドは criFs_InitializeLibrary 関数呼び出し時に作成されます。
CRIFS_THREAD_MODEL_MULTI_USER_DRIVEN 

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

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

ユーザーマルチスレッド

説明:
ライブラリ内部ではスレッドを作成しませんが、ユーザーが独自に作成したスレッドからサーバー処理関数(::criFs_ExecuteFileAccess 関数、::criFs_ExecuteDataDecompression 関数)を呼び出せるよう、内部の排他制御は行います。
CRIFS_THREAD_MODEL_SINGLE 

シングルスレッド

説明:
ライブラリ内部でスレッドを作成しません。また、内部の排他制御も行いません。
このモデルを選択した場合、各APIとサーバー処理関数(::criFs_ExecuteFileAccess 関数、::criFs_ExecuteDataDecompression 関数)とを同一スレッドから呼び出すようにしてください。

◆ CriFsOpenRetryModeTag

ファイルオープンエラー発生時のリトライ方法

列挙値
CRIFS_OPEN_RETRY_NONE 

リトライしない

CRIFS_OPEN_RETRY_INFINITE 

無限にリトライする

◆ CriFsReadRetryModeTag

ファイルリードエラー発生時のリトライ方法

列挙値
CRIFS_READ_RETRY_NONE 

リトライしない

CRIFS_READ_RETRY_INFINITE 

無限にリトライする

◆ CriFsDefaultPathSeparatorTag

デフォルトのパス区切り文字の設定

列挙値
CRIFS_DEFAULT_PATH_SEPARATOR_PLATFORM_COMPATIBLE 

プラットフォーム標準のパス区切り文字に変換する

CRIFS_DEFAULT_PATH_SEPARATOR_NONE 

パス区切り文字を変換せずそのまま使用する

◆ 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に切り詰めてオープン

CRIFS_FILE_MODE_OPEN_WITHOUT_DECRYPTING 

◆ 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 

バインド失敗

◆ CriFsBinderKind

バインド種別

説明:
何がバインドされているのかを示します。
列挙値
CRIFSBINDER_KIND_NONE 

なし

CRIFSBINDER_KIND_DIRECTORY 

ディレクトリバインド

CRIFSBINDER_KIND_CPK 

CPKバインド

CRIFSBINDER_KIND_FILE 

ファイルバインド

CRIFSBINDER_KIND_FILES 

複数ファイルバインド

CRIFSBINDER_KIND_FILE_SECTION 

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

CRIFSBINDER_KIND_SYSTEM 

バインダーシステム関連

◆ CriFsBindCpkError

Cpkバインドエラー無効時のエラー種別

説明:
Cpkバインドが無効になった際の原因を示します。
列挙値
CRIFS_BINDCPK_ERROR_NONE 

エラー無し

CRIFS_BINDCPK_ERROR_DATA 

データ不整合

CRIFS_BINDCPK_ERROR_CANNOT_READ 

読めない(メディアが無いなど)

CRIFS_BINDCPK_ERROR_NONEXISTENT 

(CPK)ファイルが無い(メディアは存在する)

◆ CriFsLoaderStatus

ロードステータス

列挙値
CRIFSLOADER_STATUS_STOP 

停止中

CRIFSLOADER_STATUS_LOADING 

ロード中

CRIFSLOADER_STATUS_COMPLETE 

完了

CRIFSLOADER_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 

ファイルの終端

◆ CriFsStdioRemoveResult

ファイル削除結果

列挙値
CRIFSSTDIO_NOT_EXECUTED 

削除操作が行われなかった

CRIFSSTDIO_FILE_REMOVED 

正常終了

CRIFSSTDIO_IO_ERROR_OCCURRD 

I/Oエラーが発生

◆ CriFsLoadLimiterNo

ロードリミッタ番号

説明:
 デフォルトの状態では、全てのローダーハンドルがリミッタ0番(リミッタ制限なし)に割り当てられています。
 リミッタを利用する場合、制限を加えるローダー、グループローダー、バッチローダーのハンドルにリミッタ1番を設定してください。
 そして、リミッタ1番のリミッタサイズを設定してください。
注意
ゲーム機向けではロードリミッタ機能は非サポートです。

関数詳解

◆ criFs_CalculateWorkSizeForLibrary()

CriError criFs_CalculateWorkSizeForLibrary ( const CriFsConfig config,
CriSint32 *  nbyte 
)

ワーク領域サイズの計算

引数
[in]configコンフィギュレーション
[out]nbyteワーク領域サイズ
戻り値
CriError エラーコード
説明:
CRI File Systemライブラリを使用するために必要な、ワーク領域のサイズを取得します。
備考:
ワーク領域のサイズはコンフィギュレーション( CriFsConfig )の内容によって変化します。
ライブラリに割り当てるメモリサイズを削減したい場合には、コンフィギュレーションのパラメータを適宜調節してください。
config に NULL を指定した場合、デフォルトのコンフィギュレーションが適用されます。
参照
CriFsConfig

◆ criFs_InitializeLibrary()

CriError criFs_InitializeLibrary ( const CriFsConfig config,
void *  buffer,
CriSint32  size 
)

CRI File Systemの初期化

引数
[in]configコンフィギュレーション
[in]bufferワーク領域
[in]sizeワーク領域サイズ
戻り値
CriError エラーコード
説明:
CRI File Systemライブラリを初期化します。
ライブラリの機能を利用するには、必ずこの関数を実行する必要があります。
(ライブラリの機能は、本関数を実行後、 criFs_FinalizeLibrary 関数を実行するまでの間、利用可能です。)
ライブラリを初期化する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。
ワーク領域を確保する方法には、以下の2通りの方法があります。
(a) User Allocator方式:メモリの確保/解放に、ユーザーが用意した関数を使用する方法。
(b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。

User Allocator方式を用いる場合、ユーザーはCRI File Systemライブラリにメモリ確保関数を登録しておきます。
workにNULL、sizeに0を指定して本関数を呼び出すことで、 ライブラリは登録済みのメモリ確保関数を使用して必要なメモリを自動的に確保します。
ユーザーがワーク領域を用意する必要はありません。
初期化時に確保されたメモリは、終了処理時( criFs_FinalizeLibrary 関数実行時)に解放されます。

Fixed Memory方式を用いる場合、ワーク領域として別途確保済みのメモリ領域を本関数に 設定する必要があります。
ワーク領域のサイズは criFs_CalculateWorkSizeForLibrary 関数で取得可能です。
初期化処理の前に criFs_CalculateWorkSizeForLibrary 関数で取得したサイズ分のメモリを予め 確保しておき、本関数に設定してください。
尚、Fixed Memory方式を用いた場合、ワーク領域はライブラリの終了処理( criFs_FinalizeLibrary 関数) を行なうまでの間、ライブラリ内で利用され続けます。
ライブラリの終了処理を行なう前に、ワーク領域のメモリを解放しないでください。
例:
【User Allocator方式によるライブラリの初期化】
User Allocator方式を用いる場合、ライブラリの初期化/終了の手順は以下の通りです。
  1. 初期化処理実行前に、 criFs_SetUserMallocFunction 関数と criFs_SetUserFreeFunction 関数を用いてメモリ確保/解放関数を登録する。
  2. 初期化用コンフィグ構造体にパラメータをセットする。
  3. criFs_InitializeLibrary 関数で初期化処理を行う。
    (workにはNULL、sizeには0を指定する。)
  4. アプリケーション終了時に criFs_FinalizeLibrary 関数で終了処理を行なう。

    具体的なコードは以下のとおりです。
    // 独自のメモリ確保関数
    void *user_malloc(void *obj, CriUint32 size)
    {
    void *mem;
    // メモリの確保
    mem = malloc(size);
    return (mem);
    }
    // 独自のメモリ解放関数を用意
    void user_free(void *obj, void *mem)
    {
    // メモリの解放
    free(mem);
    return;
    }
    main()
    {
    CriFsConfig config; // ライブラリ初期化用コンフィグ構造体
    :
    // 独自のメモリ確保関数を登録
    criFs_SetUserMallocFunction(user_malloc, NULL);
    // 独自のメモリ解放関数を登録
    criFs_SetUserFreeFunction(user_free, NULL);
    // ライブラリ初期化用コンフィグ構造体にデフォルト値をセット
    // ライブラリの初期化
    // ワーク領域にはNULLと0を指定する。
    // →必要なメモリは、登録したメモリ確保関数を使って確保される。
    criFs_InitializeLibrary(&config, NULL, 0);
    :
    // アプリケーションのメイン処理
    :
    // アプリケーションを終了する際に終了処理を行う
    // →初期化時に確保されたメモリは、登録したメモリ解放関数を使って解放される。
    :
    }
    #define criFs_SetDefaultConfig(p_config)
    デフォルトコンフィギュレーションのセット
    Definition: cri_file_system.h:1426
    CriError criFs_InitializeLibrary(const CriFsConfig *config, void *buffer, CriSint32 size)
    CRI File Systemの初期化
    void criFs_SetUserMallocFunction(CriFsMallocFunc func, void *obj)
    メモリ確保関数の登録
    void criFs_SetUserFreeFunction(CriFsFreeFunc func, void *obj)
    メモリ解放関数の登録
    CriError criFs_FinalizeLibrary(void)
    CRI File Systemの終了
    コンフィギュレーション
    Definition: cri_file_system.h:251

    【Fixed Memory方式によるライブラリの初期化】
    Fixed Memory方式を用いる場合、ライブラリの初期化/終了の手順は以下の以下の通りです。
  5. 初期化用コンフィグ構造体にパラメータをセットする。
  6. ライブラリの初期化に必要なワーク領域のサイズを、 criFs_CalculateWorkSizeForLibrary 関数を使って計算する。
  7. ワーク領域サイズ分のメモリを確保する。
  8. criFs_InitializeLibrary 関数で初期化処理を行う。
    (workには確保したメモリのアドレスを、sizeにはワーク領域のサイズを指定する。)
  9. アプリケーション終了時に criFs_FinalizeLibrary 関数で終了処理を行なう。
  10. ワーク領域のメモリを解放する。

    具体的なコードは以下のとおりです。
    main()
    {
    CriFsConfig config; // ライブラリ初期化用コンフィグ構造体
    void *work; // ワーク領域アドレス
    CriSint32 size; // ワーク領域サイズ
    :
    // ライブラリ初期化用コンフィグ構造体にデフォルト値をセット
    // ライブラリの初期化に必要なワーク領域のサイズを計算
    // ワーク領域用にメモリを確保
    work = malloc((size_t)size);
    // ライブラリの初期化
    // →確保済みのワーク領域を指定する。
    criFs_InitializeLibrary(&config, work, size);
    :
    // アプリケーションのメイン処理
    // →この間、確保したメモリは保持し続ける。
    :
    // アプリケーションを終了する際に終了処理を行う
    // 必要なくなったワーク領域を解放する
    free(work);
    :
    }
    CriError criFs_CalculateWorkSizeForLibrary(const CriFsConfig *config, CriSint32 *nbyte)
    ワーク領域サイズの計算
備考:
ライブラリ使用中に確保できるハンドルの数(CriFsBinderやCriFsLoaderの数)は、 初期化設定コンフィギュレーション(引数のconfig)で指定します。
ライブラリが必要とするワーク領域のサイズも、コンフィギュレーション内容に応じて変化します。
(ハンドル数を増やせば、必要なメモリのサイズも大きくなります。)
config に NULL を指定した場合、デフォルトのコンフィギュレーションが適用されます。
注意
本関数を実行後、必ず対になる criFs_FinalizeLibrary 関数を実行してください。
また、 criFs_FinalizeLibrary 関数を実行するまでは、本関数を再度実行することはできません。
参照
CriFsConfig, criFs_CalculateWorkSizeForLibrary, criFs_FinalizeLibrary
criFs_SetUserMallocFunction, criFs_SetUserFreeFunction

◆ criFs_FinalizeLibrary()

CriError criFs_FinalizeLibrary ( void  )

CRI File Systemの終了

戻り値
CriError エラーコード
説明:
CRI File Systemライブラリを終了します。
注意
criFs_InitializeLibrary 関数実行前に本関数を実行することはできません。
参照
criFs_InitializeLibrary

◆ criFs_SetConfigForWorkSizeCalculation()

CriError criFs_SetConfigForWorkSizeCalculation ( const CriFsConfig config)

ワーク領域サイズ計算用コンフィグ構造体の設定

引数
[in]config初期化用コンフィグ構造体
戻り値
CriError エラーコード
説明:
ワーク領域サイズの計算用に、ライブラリ初期化用コンフィグ構造体 ( CriFsConfig 構造体)を仮登録します。

ローダーの作成に必要なワーク領域のサイズは、ライブラリ初期化時 ( criFs_InitializeLibrary 関数実行時)に指定するパラメーターによって変化します。
そのため、 criFsLoader_GetWorkSize 関数でローダーの作成に必要なワーク領域のサイズを取得する場合、 事前にライブラリを初期化しておくか、または本関数を使用してライブラリ初期化パラメーターを仮登録する必要があります。
備考:
引数( config )に NULL を指定した場合、デフォルト設定 ( criFs_SetDefaultConfig 適用時と同じパラメーター)で ワーク領域サイズを計算します。
注意
本関数で登録した初期化用コンフィグ構造体は、 ライブラリ未初期化状態でのワーク領域サイズ計算にしか使用されません。
ライブラリ初期化後には本関数に設定したパラメーターではなく、 criFs_InitializeLibrary 関数に指定されたパラメーターがワーク領域サイズの計算に使用されます。
(本関数で登録する構造体のパラメーターと、ライブラリの初期化に使用する構造体のパラメーターが異なる場合、 ワーク領域サイズが不足し、ローダーの作成に失敗する恐れがあります。)
例:
CriFsConfig config;
// ライブラリ初期化用コンフィグ構造体にデフォルト値を設定
// ワーク領域サイズ計算用にパラメーターを仮登録
// サブモジュールのワーク領域サイズを計算
criFsLoader_GetWorkSize(&loader_work_size);
CriError criFs_SetConfigForWorkSizeCalculation(const CriFsConfig *config)
ワーク領域サイズ計算用コンフィグ構造体の設定
CriError criFsLoader_GetWorkSize(CriSint32 *work_size)
ローダー作成用ワーク領域サイズの取得
参照
criFsLoader_GetWorkSize

◆ 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);
:
}
備考:
引数の 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);
:
}
備考:
引数の obj に指定した値は、 CriFsFreeFunc に引数として渡されます。
メモリ確保時にメモリマネージャー等を参照する必要がある場合には、 当該オブジェクトを本関数の引数にセットしておき、コールバック関数で引数を経由 して参照してください。
注意
メモリ解放関数を登録する際には、合わせてメモリ確保関数( CriFsMallocFunc )を 登録する必要があります。
参照
CriFsFreeFunc, criFs_SetUserMallocFunction

◆ criFs_ExecuteMain()

CriError criFs_ExecuteMain ( void  )

サーバー処理の実行

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

◆ criFs_ExecuteFileAccess()

CriError criFs_ExecuteFileAccess ( void  )

ファイルアクセス処理の実行(非スレッド時環境向け)

戻り値
CriError エラーコード
説明:
CRI File Systemライブラリのファイルアクセス処理を実行します。
注意
この関数は、スレッドを使用しない環境でCRI File Systemライブラリを使用する場合に呼び出す必要があります。
スレッドを使用する環境では、この関数の代わりに、 criFs_ExecuteMain 関数を実行してください。
参照
criFs_ExecuteMain()

◆ criFs_ExecuteDataDecompression()

CriError criFs_ExecuteDataDecompression ( void  )

データ展開処理の実行(非スレッド時環境向け)

戻り値
CriError エラーコード
説明:
CRI File Systemライブラリのデータ展開処理を実行します。
注意
この関数は、スレッドを使用しない環境でCRI File Systemライブラリを使用する場合に呼び出す必要があります。
スレッドを使用する環境では、この関数の代わりに、 criFs_ExecuteMain 関数を実行してください。
参照
criFs_ExecuteMain()

◆ criFs_SetOpenRetryMode()

CriError criFs_SetOpenRetryMode ( CriFsOpenRetryMode  mode)

ファイルオープンエラー発生時のリトライ方法の設定

引数
[in]modeリトライ方法
戻り値
CriError エラーコード
説明:
ファイルのオープンに失敗した場合に、CRI File Systemライブラリ内でオープンのリトライを行なうかどうかを指定します。
リトライ方法に CRIFS_OPEN_RETRY_INFINITE を指定した場合、ファイルがオープンできるまでCRI File Systemライブラリはオープン処理をリトライし続けます。
CRIFS_OPEN_RETRY_NONE を指定した場合、CRI File Systemライブラリはリトライ処理を行なわず、ハンドルのステータスをエラー状態に遷移します。

◆ criFs_SetReadRetryMode()

CriError criFs_SetReadRetryMode ( CriFsReadRetryMode  mode)

ファイルリードエラー発生時のリトライ方法の設定

引数
[in]modeリトライ方法
戻り値
CriError エラーコード ファイルのリードに失敗した場合に、CRI File Systemライブラリ内でリードのリトライを行なうかどうかを指定します。
リトライ方法に CRIFS_READ_RETRY_INFINITE を指定した場合、ファイルがリードできるまでCRI File Systemライブラリはリード処理をリトライし続けます。
CRIFS_READ_RETRY_NONE を指定した場合、CRI File Systemライブラリはリトライ処理を行なわず、ハンドルのステータスをエラー状態に遷移します。

◆ criFs_BeginGroup()

CriError criFs_BeginGroup ( const CriChar8 *  groupname,
const CriChar8 *  attrname 
)

グループ優先区間の開始

戻り値
CriError エラーコード
引数
[in]groupnameグループ名
[in]attrnameアトリビュート名
説明:
グループ優先区間を開始します。
本関数実行後、 criFs_EndGroup 関数を実行するまでの間、指定したグループ内のファイルが優先的にロードされるようになります。
(バインダー内に同じ名前のファイルが複数存在する場合でも、指定したグループ内のファイルが優先して選択されます。)
本関数を使用することにより、通常のローダーを使用する場合でも、グループ化の恩恵を受けることが可能になります。
注意
複数のグループ優先区間を重複させることはできません。
本関数を実行後、必ず対になる criFs_EndGroup 関数を実行してください。 本関数と criFs_BeginLoadRegion 関数を併用することはできません。
(CRI File System Ver.2.02.00より、 criFs_BeginLoadRegion 関数は本関数を呼び出すマクロに変更されました。)
参照
criFs_EndGroup, criFs_BeginLoadRegion

◆ criFs_EndGroup()

CriError criFs_EndGroup ( void  )

グループ優先区間の終了

戻り値
CriError エラーコード
説明:
グループ優先区間を終了します。
注意
本関数と criFs_EndLoadRegion 関数を併用することはできません。
(CRI File System Ver.2.02.00より、 criFs_EndLoadRegion 関数は本関数を呼び出すマクロに変更されました。)
参照
criFs_BeginGroup

◆ criFs_GetNumUsedBinders()

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

バインダー使用数の取得

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

◆ criFs_GetNumUsedLoaders()

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

ローダー使用数の取得

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

◆ criFs_GetNumUsedGroupLoaders()

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

グループローダー使用数の取得

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

◆ criFs_GetNumUsedStdioHandles()

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

CriFsStdioハンドル使用数の取得

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

◆ criFs_GetNumUsedInstallers()

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

インストーラー使用数の取得

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

◆ criFs_GetNumBinds()

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

バインド数の取得

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

◆ criFs_GetNumOpenedFiles()

CriError criFs_GetNumOpenedFiles ( 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_file_system.h:124
@ CRIERR_OK
Definition: cri_error.h:44
I/Oインターフェイス
Definition: cri_file_system.h:663
注意
コールバック関数は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_SetReadDeviceEnabled()

CriError criFs_SetReadDeviceEnabled ( CriFsDeviceId  id,
CriBool  enabled 
)
引数
[in]idデバイスID
[in]enabledデバイスを作成するか否か
戻り値
CriError エラーコード
説明:
リードデバイスの有効・無効の切り替えを行います。アプリケーション側で使用しないデバイスがある場合は本関数で無効にしてください
デフォルトでは、すべてのデバイスが Enabled の状態です。
本関数で不要なデバイスを作成しないようにすることで、ファイルシステムスレッドの動作を減らすことができます。
CRIFS_DEVICE_DEFAULT と CRIFS_DEVICE_MEMORY 以外にも、プラットフォームによっては固有のデバイスが作成されます。
第一引数には CRIFS_DEVICE_00 〜 CRIFS_DEVICE_07 の範囲の値を指定してください。
プラットフォーム固有のヘッダーファイルに記載されたデバイスIDと当該デバイスで扱うことのできるファイルパスを確認の上、本関数をご利用ください。
本関数でデバイスを無効にした結果、どのデバイスも作成されない場合、ライブラリ初期化時にエラーコールバックが発生します。
覚え書き
本関数は::criFs_InitializeLibrary 関数よりも前に呼び出してください。
参照
CriFsDeviceId

◆ criFs_GetDeviceInfo()

CriError criFs_GetDeviceInfo ( CriFsDeviceId  id,
CriFsDeviceInfo info 
)

デバイス情報の取得

引数
[in]idデバイスID
[out]infoデバイス情報
戻り値
CriError エラーコード
説明:
指定したデバイスの情報を取得します。
指定したデバイスがファイルの書き込みに対応しているかどうかや、 読み書きに使用するバッファーのアライメント調整が必要かどうかを確認することが可能です。
参照
CriFsDeviceId, CriFsDeviceInfo, criFs_SetDeviceInfo

◆ criFs_SetDeviceInfo()

CriError criFs_SetDeviceInfo ( CriFsDeviceId  id,
CriFsDeviceInfo  info 
)

デバイス情報の設定

引数
[in]idデバイスID
[in]infoデバイス情報
戻り値
CriError エラーコード
説明:
指定したデバイスの情報を変更します。
I/Oレイヤー差し替え時、I/Oレイヤー側でデバイスの制限を緩和できる場合等に使用します。
参照
CriFsDeviceId, CriFsDeviceInfo, criFs_GetDeviceInfo

◆ criFs_AddressToPath()

CriError criFs_AddressToPath ( const void *  buffer,
CriSint64  buffer_size,
CriChar8 *  path,
CriSint32  length 
)

メモリファイルパスの作成

引数
[in]bufferデータアドレス
[in]buffer_sizeデータサイズ
[out]pathパス文字列格納領域
[in]lengthパス文字列格納領域サイズ(単位はバイト)
戻り値
CriError エラーコード
説明:
メモリ上に配置されたデータをファイルとしてアクセスするためのパス文字列を作成します。
第1引数( buffer )と第2引数( buffer_size )にデータの格納アドレスとデータサイズを指定することで、 当該データをファイルとして扱うためのパスが第3引数( path )に格納されます。
尚、パス文字列を格納する領域のサイズは、第4引数( length )で指定します。
備考:
本関数は、メモリ上にロードされたCPKファイルをバインドする際に利用します。
CPKファイルをメモリ上にロード後、ロードした領域のアドレスとサイズを本関数でパス文字列に変換するし、 criFsBinder_BindCpk 関数等に指定することで、オンメモリCPKデータのバインドが可能になります。
例:
// CPKファイルをメモリ上にロード
criFsLoader_Load(loader_hn, NULL, "sample.cpk"
0, cpk_file_size, buffer, buffer_size);
// ファイル読み込み完了待ち
for (;;) {
criFsLoader_GetStatus(loader_hn, &loader_status);
if (loader_status == CRIFSLOADER_STATUS_COMPLETE) {
break;
}
}
// オンメモリCPKデータのアドレスとサイズをパス文字列に変換
criFs_AddressToPath(buffer, buffer_size, path, length);
// オンメモリCPKのバインド
criFsBinder_BindCpk(binder_hn, NULL, path,
bind_work, bind_work_size, &bind_id);
@ CRIFSLOADER_STATUS_COMPLETE
Definition: cri_file_system.h:1222
CriError criFsBinder_BindCpk(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
Cpkファイルのバインド
CriError criFsLoader_GetStatus(CriFsLoaderHn loader, CriFsLoaderStatus *status)
ロードステータスの取得
CriError criFs_AddressToPath(const void *buffer, CriSint64 buffer_size, CriChar8 *path, CriSint32 length)
メモリファイルパスの作成
CriError criFsLoader_Load(CriFsLoaderHn loader, CriFsBinderHn binder, const CriChar8 *path, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
データのロード
注意
パス文字列の格納領域サイズが小さい場合、本関数は失敗し、エラーを返します。
現状、32bitメモリ空間のみの環境では、パス文字列の格納領域は 28 バイト必要です。
64bitメモリ空間の環境では、 パス文字列の格納領域は 44 バイト必要です。
参照
CriFsDeviceId, CriFsDeviceInfo, criFs_GetDeviceInfo

◆ criFs_SetMemoryFileSystemSyncCopyLimit()

CriError criFs_SetMemoryFileSystemSyncCopyLimit ( CriSint64  limit)

メモリファイルシステム用同期コピーサイズ上限の設定

引数
[in]limit同期コピーサイズ上限
戻り値
CriError エラーコード
説明:
一定サイズ以下のメモリコピー処理を、メインスレッド側で実行するよう設定します。

メモリファイルシステムを使用する場合( criFs_AddressToPath 関数で作成したパスへアクセスする場合)、データの転送(≒メモリコピー処理) は低プライオリティのメモリコピー専用スレッド上で行なわれます。
(マルチスレッドモデル以外の場合、サーバー処理内でコピー処理が行われます。)

この仕組みにより、巨大なデータをコピーする場合でもコピー処理にCPU時間が占有されることがなくなるため、 コピー処理によりメインループがブロックされてしまう、といった現象を防止することができます。
反面、別スレッドで行われるコピー処理をポーリングする形になるため、 小さなデータをコピーする際でも、ポーリング間隔に依存した遅延が発生することになります。

本関数で同期コピーサイズ上限を設定すると、設定されたサイズ以下のデータをコピーする際、 別スレッドでコピー処理を行わず、その場でコピー処理を実行するよう動作が変更されます。
(メインスレッドにコピー処理分の負荷がかかりますが、ロード完了までの時間が短縮されます。)
備考:
デフォルト設定では全てのコピー処理が別スレッドで実行されます。

本関数で同期コピー処理が有効になると、各モジュールの動作は以下のように変化します。

・CriFsLoader
criFsLoader_Load 関数実行直後にローダーのステータスが CRIFSLOADER_STATUS_COMPLETE に遷移します。
criFsLoader_Load 関数内でコピー処理を行います。)

・CriFsStdio
criFsStdio_ReadFile 関数内でスリープしなくなります。
criFsStdio_ReadFile 関数内でコピー処理を行います。)
注意
上限値を大きく設定した状態で巨大なファイルをロードすると、 criFsLoader_Load 関数等で長時間処理がブロックされる恐れがあります。

閾値の判定はロード要求サイズに対して行っています。
そのため、実際にコピーできるサイズが指定されたリミット以下のサイズであっても、 criFsLoader_Load 関数や criFsStdio_ReadFile 関数に指定したロード要求サイズがリミットを超えている場合、別スレッドで処理されます。
参照
criFs_AddressToPath

◆ criFs_SetLoadLimiterSize()

CriError criFs_SetLoadLimiterSize ( CriFsLoadLimiterNo  limiter_no,
CriSint32  limiter_size 
)

ロードリミッタのサイズの設定

引数
[in]limiter_noロードリミッタ番号
[in]limiter_sizeロードリミッタサイズ(byte/1サーバー周期)
戻り値
CriError エラーコード
説明:
1サーバー周期当たりの読み込みサイズの制限値を設定します。
共通のリミッタ番号を割り当てた全てのローダー、グループローダー、バッチローダーの合計読み込みサイズが、ここで設定するサイズに制限されます。
制限に達したリミッタ番号のロード処理は一時保留され、次回のサーバー周期で自動的に再開します。
リミッタに計上する数値は、ロードリミッタの単位サイズに切り上げて積算します。
圧縮データを読み込む場合、オリジナルデータサイズではなく、圧縮データサイズをリミッタに計上します。
圧縮ファイルを分割読み込みできない環境では、圧縮ファイルを読み込むときリミッタの制限を越える場合があります。このような環境では、巨大な圧縮ファイルに対しては実質的にリミッタの制御が効かないことにご注意ください。
読み込み途中でもリミッタサイズを変更することができます。リミッタサイズをゼロとして一時停止することもできます。
リミッタ0番のサイズは設定できません。0番は制限のない通常のロード処理に割り当てられます。
現状はリミッタ1番だけが設定可能です。
リミッタサイズのデフォルト値は CRIFS_LOADLIMITER_SIZE_DEFAULT (リミッタ制限なし)となっています。
注意
ゲーム機向けではロードリミッタ機能は非サポートです。この関数は呼び出さないでください。
参照
CriFsLoadLimiterNo criFs_SetLoadLimiterSize criFs_SetLoadLimiterUnit criFsLoader_SetLoadLimiter criFsGroupLoader_SetLoadLimiter criFsBatchLoader_SetLoadLimiter

◆ criFs_SetLoadLimiterUnit()

CriError criFs_SetLoadLimiterUnit ( CriFsLoadLimiterNo  limiter_no,
CriSint32  limiter_unit 
)

ロードリミッタの単位サイズの設定

引数
[in]limiter_noロードリミッタ番号
[in]limiter_unitロードリミッタ単位サイズ(byte)
戻り値
CriError エラーコード
説明:
DMA転送単位サイズやROMページサイズなど、分割読み込みを許容する最小のサイズを設定してください。
リミッタ0番の単位サイズは設定できません。0番は制限のない通常のロード処理に割り当てられます。
現状はリミッタ1番だけが設定可能です。
注意
ゲーム機向けではロードリミッタ機能は非サポートです。この関数は呼び出さないでください。
参照
CriFsLoadLimiterNo criFs_SetLoadLimiterSize criFs_SetLoadLimiterUnit criFsLoader_SetLoadLimiter criFsGroupLoader_SetLoadLimiter criFsBatchLoader_SetLoadLimiter

◆ criFs_LimitNumReadRequest()

CriError criFs_LimitNumReadRequest ( CriSint32  limit_num_read_request)

リード要求回数の制限

引数
[in]limit_num_read_request1サーバー周期当たりのリード要求回数の上限
戻り値
CriError エラーコード
説明:
1サーバー周期当たりのリード要求回数の上限を設定します。
デフォルト値は CRIFS_READ_REQUEST_NUM_UNLIMITED(制限なし)となっています。
リード要求毎にかかるCPU負荷が高いプラットホームにおいて、この関数を利用する ことでファイルシステムが消費するCPU時間を制限して、他の負荷が高い処理のため にCPU時間を確保することができます。
この関数を利用した場合、副作用として、多数の小さなファイルを読み込む場合の スループットが低下します。

◆ criFs_SetDefaultPathSeparator()

CriError criFs_SetDefaultPathSeparator ( CriFsDefaultPathSeparator  default_path_separator)

デフォルトパス区切り文字の設定

引数
[in]default_path_separatorデフォルトパス区切り文字設定
戻り値
CriError エラーコード
説明:
CRI File Systemライブラリ内部で標準として扱うパス区切り文字を設定します。
CRIFS_DEFAULT_PATH_SEPARATOR_PLATFORM_COMPATIBLE を設定すると、パス区切り文字を自動的に そのプラットフォームで標準とされるパス区切り文字へと変換して処理します。
CRIFS_DEFAULT_PATH_SEPARATOR_NONE を設定すると、パス区切り文字の変換は行わず、 与えられたパスをそのまま使用するようになります。
未設定時(CRI File Systemライブラリのデフォルト設定)は::CRIFS_DEFAULT_PATH_SEPARATOR_PLATFORM_COMPATIBLE です。
参照
CriFsDefaultPathSeparator

◆ 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_BindCpk 関数、::criFsBinder_BindFile 関数を呼び出し時に作成 したファイルハンドルはアンバインドするまでライブラリ内部で保持し、保持中のファイルに対するアクセスでは ファイルオープンが発生しません。

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

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

◆ criFs_SetFileAccessThreadStackSize()

CriError criFs_SetFileAccessThreadStackSize ( CriUint32  size)

ファイルアクセススレッドのスタックサイズ設定

引数
[in]sizeスタックサイズ(バイト単位)
戻り値
CriError エラーコード
説明:
ファイルアクセススレッドのスタックサイズを設定します。
設定しない場合は、機種ごとのデフォルト値が適用されます。
注意:
本関数はライブラリ初期化前に呼び出してください。
ライブラリ初期化後に呼び出すことは出来ません。

◆ criFsBinder_SetUserHeapFunc()

CriError criFsBinder_SetUserHeapFunc ( CriFsMallocFunc  allocfunc,
CriFsFreeFunc  freefunc,
void *  obj 
)

CRI File System - Binder オブジェクト

説明:
CriFsBinderとはファイルデータをデータベース化するためのモジュールです。

バインダーモジュール関数で使用されるメモリ管理関数の登録/削除

引数
[in]allocfuncメモリ確保関数
[in]freefuncメモリ解放関数
[in]objメモリ管理オブジェクト
戻り値
CriError エラーコード
説明:
CriFsBinder関数の引数で指定するワーク領域に NULL を指定した場合、内部から呼ばれるメモリ管理関数を登録します。
CriFsBinder関数に NULL 以外を指定した場合は、渡された領域を利用します。

本関数により、CriFsBinder関数に必要なワーク領域の管理をユーザー独自のメモリ管理関数で動的に行うことが可能になります。
本関数によりメモリ管理関数を設定する場合は、 criFs_InitializeLibrary 関数の直後に本関数を呼び出してください。
本関数の引数allocfunc, freefuncがNULLの場合、登録されたメモリ管理関数を削除します。
CriFsBinder関数は、現在登録されているメモリ管理関数を使用しますので、一旦登録されたメモリ管理関数を削除/変更する場合は、 登録されたメモリ管理関数を利用して確保されたメモリ領域が無いことを確認するようにしてください。
::criFs_SetUserMallocFunction 関数との関係:
本関数で登録されるメモリ管理関数はCriFsBinder関数での使用に限定されます。
本関数でメモリ管理関数を登録せず、::criFs_SetUserMallocFunction 関数で関数が登録されている場合は、 criFs_SetUserMallocFunction 関数で登録された関数がメモリ確保時に呼出されます。
本関数で登録された関数がある場合は、本関数で登録されたメモリ確保関数が呼出されます。
CPKバインドについて:
CPKバインド時には、criFsBinder_GetWorkSizeForBindCpk関数の項にも記されてる通り、CPK解析に必要なワーク領域のサイズが CPKの構成に依ってしまうので、事前に必要なワークサイズを見積ることが困難です。
本関数により、CPK解析エンジンが要求するメモリの管理をユーザー独自のメモリ管理関数で行うことが可能になります。
例:
void *u_alloc(void *obj, CriUint32 size)
{
:
}
void u_free(void *obj, void *ptr)
{
:
}
void bind_cpk(void)
{
CriSint32 wksize;
void *work;
// メモリ管理関数の登録
criFsBinder_SetUserHeapFunc(u_alloc, u_free, u_mem_obj);
// CPK バインド
criFsBinder_BindCpk(NULL, NULL, "sample.cpk", NULL, 0, &id);
:
// ワークを指定した場合、指定されたワークを使用します。
criFsBinder_GetWorkSizeForBindFile(NULL, "sample.cpk", &wksize);
work = malloc(wksize);
criFsBinder_BindFile(NULL, NULL, "sample.cpk", work, wksize, &id);
:
// CPKバインド時、criFsBinder_GetWorkSizeForBindCpk は CPK解析以外の
// バインドに必要な最低限必要なワークのサイズを返しますので、
// 未確定な領域だけを動的に確保するような使いかたも可能です。
criFsBinder_GetWorkSizeForBindCpk(NULL, "sample.cpk", &wksize);
work = malloc(wksize);
// CPK バインド
criFsBinder_BindCpk(NULL, NULL, "sample.cpk", work, wksize, &id);
:
}
CriError criFsBinder_GetWorkSizeForBindFile(CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
ファイルバインドのワークサイズの取得
CriError criFsBinder_SetUserHeapFunc(CriFsMallocFunc allocfunc, CriFsFreeFunc freefunc, void *obj)
CRI File System - Binder オブジェクト
CriError criFsBinder_BindFile(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
ファイルのバインド
CriUint32 CriFsBindId
CriFsBinder ID
Definition: cri_file_system.h:1066
CriError criFsBinder_GetWorkSizeForBindCpk(CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
CPKファイルバインドのワークサイズ取得

◆ 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_file_system.h:1054
参照
criFsBinder_Destroy()

◆ criFsBinder_Destroy()

CriError criFsBinder_Destroy ( CriFsBinderHn  bndrhn)

バインダーの破棄

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

◆ criFsBinder_GetWorkSizeForBindCpk()

CriError criFsBinder_GetWorkSizeForBindCpk ( CriFsBinderHn  srcbndrhn,
const CriChar8 *  path,
CriSint32 *  worksize 
)

CPKファイルバインドのワークサイズ取得

引数
[in]srcbndrhnバインドするCPKファイルにアクセスするためのバインダーハンドル
[in]pathバインドするCPKファイルのパス名
[out]worksize必要ワークサイズ(バイト)
戻り値
CriError エラーコード
説明:
criFsBinder_BindCpk関数に指定するワークサイズを取得します。
本関数では、CPKの情報を解析するために最低限必要とされるワークサイズを取得できます。
コンテンツファイル数の少いCPKファイルであれば、本関数で得られる数値のままでもCPKをバインドできる可能性があります。
CPKバインド中にワークメモリが不足した場合、エラーコールバック関数で不足分の容量が示されます。

*** CPKバインドに必要なワークサイズの取得するには、以下の方法があります。 ***

1. エラーコールバックを利用する。
CPKバインド中にワークメモリが不足した場合、エラーコールバック関数により不足分のサイズが示されます。
現在確保しているワーク領域のサイズに、エラーコールバックで得られるサイズを加算してワーク領域を再確保し、CPKバインドをやりなおします。
CPKバインドをやりなおす場合、メモリ不足エラーコールバックを起こしたバインダーIDをアンバインドする必要があります。

2. メモリ確保/解放コールバック関数( ::criFsBinder_SetUserHeapFunc )を利用する。
CPKバインド時にワークメモリの確保/解放が必要な際に呼出されるコールバック関数を登録します。
バインド時に適時メモリ確保コールバック関数が呼出された場合、要求されたメモリを確保してエラーコールバック関数の返値として返します。

3. 必要ワークサイズ取得API( criFsBinder_AnalyzeWorkSizeForBindCpk )を利用する。
バインドするCPKから情報を取得し、必要となるワークサイズを算出する関数を利用します。
この関数は完了復帰関数で、関数内部でCPKファイルから情報を読み出しています。そのため関数終了までに時間がかかります。

4. CPKパッキングツールを利用する。
パッキングツールにCPKファイルをドラッグ&ドロップし、CPKファイルビューア[詳細]テキストボックスの 「Enable Filename info.」「Enable ID info.」[Enable Group info.]項目に表示されるバイト数を、 本関数で取得される必要ワークサイズに加算します。
ただし、この方法で得られるワークサイズは目安ですので、メモリ不足エラーコールバックが起きる可能性があります。
参照
criFsBinder_BindCpk() criFsBinder_SetUserHeapFunc() criFsBinder_AnalyzeWorkSizeForBindCpk()

◆ criFsBinder_AnalyzeWorkSizeForBindCpk()

CriError criFsBinder_AnalyzeWorkSizeForBindCpk ( CriFsBinderHn  srcbndrhn,
const CriChar8 *  path,
void *  work,
CriSint32  wksize,
CriSint32 *  rqsize 
)

CPKバインドに必要なワーク領域サイズの取得

引数
[in]srcbndrhnバインダーハンドル
[in]pathCPKファイルのパス
[in]workCPKヘッダー解析用のワーク領域
[in]wksizeCPKヘッダー解析用のワーク領域のサイズ
[out]rqsizeCPKバインドに必要なワーク領域のサイズ
戻り値
CriError エラーコード
説明:
srcbndrhn と path で指定されたCPKファイルを解析し、CPKバインドに必要なワーク領域の サイズを取得します。
本関数は完了復帰関数です。
本関数は、指定されたCPKファイルのヘッダー情報を読み込んで解析しています。そのため、 内部で読込待ちを行っています。 本関数に渡すワーク領域は、criFsBinder_GetWorkSizeForBindCpk関数で得られたサイズの ワーク領域を確保して渡してください。
例:
// ---- CPK解析に最低限必要なメモリの確保
work = malloc(wksz);
// CPKバインドに必要なメモリ容量を解析
criFsBinder_AnalyzeWorkSizeForBindCpk(bndrhn, path, work, wksz, &nbyte);
free(work);
// ----
// CPKバインド用メモリの確保
bindwork = malloc(nbyte);
// CPKバインド
criFsBinder_BindCpk(srcbndr, path, bindwork, nbyte, &bndrid);
CriError criFsBinder_AnalyzeWorkSizeForBindCpk(CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 wksize, CriSint32 *rqsize)
CPKバインドに必要なワーク領域サイズの取得

◆ criFsBinder_GetWorkSizeForBindFile()

CriError criFsBinder_GetWorkSizeForBindFile ( CriFsBinderHn  srcbndrhn,
const CriChar8 *  path,
CriSint32 *  worksize 
)

ファイルバインドのワークサイズの取得

引数
[in]srcbndrhnバインドするファイルにアクセスするためのバインダーハンドル
[in]pathバインドするファイルのパス名
[out]worksize必要ワークサイズ(バイト)
戻り値
CriError エラーコード
説明:
criFsBinder_BindFile関数に指定するワークサイズを取得します。
参照
criFsBinder_BindFile()

◆ criFsBinder_GetWorkSizeForBindFiles()

CriError criFsBinder_GetWorkSizeForBindFiles ( CriFsBinderHn  srcbndrhn,
const CriChar8 *  filelist,
CriSint32 *  worksize 
)

複数ファイルバインドのワークサイズの取得

引数
[in]srcbndrhnバインドするファイルにアクセスするためのバインダーハンドル
[in]filelistバインドするファイル名のリスト(セパレータ:',''\t''\n' ターミネイタ:'\0')
[out]worksize必要ワークサイズ(バイト)
戻り値
CriError エラーコード
説明:
criFsBinder_BindFiles関数に指定するワークサイズを取得します。
参照
criFsBinder_BindFiles()

◆ criFsBinder_GetWorkSizeForBindFileSection()

CriError criFsBinder_GetWorkSizeForBindFileSection ( CriFsBinderHn  srcbndrhn,
const CriChar8 *  path,
const CriChar8 *  section_name,
CriSint32 *  worksize 
)

ファイルセクションバインドのワークサイズの取得

引数
[in]srcbndrhnバインドするファイルにアクセスするためのバインダーハンドル
[in]pathバインドするファイルのパス名
[in]section_nameセクション名
[out]worksize必要ワークサイズ(バイト)
戻り値
CriError エラーコード
説明:
criFsBinder_BindFileSection関数に指定するワークサイズを取得します。
参照
criFsBinder_BindFileSection()

◆ criFsBinder_GetWorkSizeForBindDirectory()

CriError criFsBinder_GetWorkSizeForBindDirectory ( CriFsBinderHn  srcbndrhn,
const CriChar8 *  path,
CriSint32 *  worksize 
)

ディレクトリバインドのワークサイズの取得

引数
[in]srcbndrhnバインドするディレクトリにアクセスするためのバインダーハンドル
[in]pathバインドするディレクトリのパス名
[out]worksize必要ワークサイズ(バイト)
戻り値
CriError エラーコード
説明:
criFsBinder_BindDirectory関数に指定するワークサイズを取得します。
参照
criFsBinder_BindDirectory()

◆ criFsBinder_BindCpk()

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

Cpkファイルのバインド

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

◆ criFsBinder_BindFiles()

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

複数ファイルのバインド

引数
[in]bndrhnファイルバインドをするバインダーハンドル
[in]srcbndrhnバインド対象のファイルを検索するためのバインダーハンドル
[in]filelistバインドするファイル名のリスト(セパレータ:',''\t''\n' ターミネイタ:'\0')
[in]workバインド用ワーク領域
[in]worksizeワーク領域のサイズ
[out]bndridバインドID
戻り値
CriError エラーコード
説明:
ファイルリスト(filelist)に列記されたファイルをバインドします。
ファイルはsrcbndrhnから検索されますが、srcbndrhnがNULLの場合、デフォルトデバイスが使用されます。
ワーク領域のサイズは、criFsBinder_GetWorkSizeForBindFiles で取得できます。 ワーク領域は、バインドIDが破棄されるまで保持して下さい。<br>
メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にNULL(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。
バインドを開始できない場合、バインドIDは CRIFSBINDER_BID_NULL が返されます。 バインドIDに CRIFSBINDER_BID_NULL 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。<br>
バインドしたファイルはファイルオープン状態で保持します。 内部的には CriFsLoader がバインドIDに1つ作成され、ファイルハンドルがバインドするファイル数分使用されます。<br>
本関数は即時復帰関数です。本関数から復帰した直後は、ファイルのバインドはまだ完了しておらず、 バインダーを利用したファイルへのアクセスは行えません。
バインド状態が完了( CRIFSBINDER_STATUS_COMPLETE )となった後に、ファイルは利用可能となります。
バインド状態は criFsBinder_GetStatus 関数で取得します。
例:
void *work;
CriSint32 wksz;
CriFsBindId bndrid;
CriChar8 *flist = "a.txt,b.txt,c.txt";
work = malloc(wksz);
criFsBinder_BindFiles(bndrhn, NULL, flist, work, wksz, &bndrid);
for (;;) {
criFsBinder_GetStatus(bndrid, &status);
if (status == CRIFSBINDER_STATUS_COMPLETE) break;
}
CriError criFsBinder_GetWorkSizeForBindFiles(CriFsBinderHn srcbndrhn, const CriChar8 *filelist, CriSint32 *worksize)
複数ファイルバインドのワークサイズの取得
CriError criFsBinder_BindFiles(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *filelist, void *work, CriSint32 worksize, CriFsBindId *bndrid)
複数ファイルのバインド
参照
criFsBinder_GetWorkSizeForBindFiles(), 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_BindDirectory()

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

ディレクトリパスのバインド

引数
[in]bndrhnバインダーハンドル
[in]srcbndrhnバインドしたディレクトリ名でファイルにアクセスする際のバインダー
[in]pathバインドするディレクトリパス名
[in]workバインド用ワーク領域
[in]worksizeワーク領域のサイズ(バイト)
[out]bndridバインドID
戻り値
CriError エラーコード
説明:
ディレクトリパス名をバインドします。
バインドするディレクトリ名は絶対パスで指定してください。 バインド時に指定されたディレクトリが存在するか否かはチェックしていません。
バインドされるのはディレクトリパスだけで、指定されたディレクトリ内のファイルを オープン状態にするものではありません。よってバインドに失敗しない限り、本関数から復帰時には バインドIDのバインド状態は完了( CRIFSBINDER_STATUS_COMPLETE )となります。
srcbndrhnには、本関数でバインドしたディレクトリを用いてファイルを検索する際に、 検索対象となるバインダーを指定します。
ワーク領域(work)のサイズは、criFsBinder_GetWorkSizeForBindDirectoryで取得できます。 ワーク領域は、バインドIDが破棄されるまで保持して下さい。
メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にNULL(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。
バインドを開始できない場合、バインドIDは CRIFSBINDER_BID_NULL が返されます。 バインドIDに CRIFSBINDER_BID_NULL 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。
備考:
最大同時にバインド可能なディレクトリ数には制限があります。
具体的には、CriFsConfig の num_binders や max_binds の値が充分であっても、 現状は最大16個(PCのみ64個)までしかディレクトリをバインドすることができません。
注意
本関数は開発支援用のデバッグ関数です。
本関数を使用した場合、以下の問題が発生する可能性があります。
  • criFsLoader_Load関数やcriFsBinder_GetFileSize関数内で処理が長時間ブロックされる。
  • バインドしたディレクトリ内のファイルにアクセスする際、音声やムービーのストリーム再生が途切れる。


マスターアップ時には本関数をアプリケーション中で使用しないようご注意ください。
(ディレクトリ内のデータをCPKファイル化してcriFsBinder_BindCpk関数でバインドするか、またはディレクトリ内のファイルを全てcriFsBinder_BindFiles関数でバインドしてください。)

例:
void *work;
CriSint32 wksz;
CriFsBindId bndrid;
criFsBinder_GetWorkSizeForBindDirectory(bndrhn, "/cri/samples/", &wksz);
work = malloc(wksz);
criFsBinder_BindDirectory(bndrhn, bndrhn, "/cri/samples/", work, wksz, &bndrid);
CriError criFsBinder_GetWorkSizeForBindDirectory(CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
ディレクトリバインドのワークサイズの取得
CriError criFsBinder_BindDirectory(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
ディレクトリパスのバインド
参照
criFsBinder_GetWorkSizeForBindDirectory(), criFsBinder_SetUserHeapFunc(), criFsBinder_GetStatus(), criFsBinder_Unbind(), criFsBinder_BindCpk(), criFsBinder_BindFiles()

◆ 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_UnbindAsync()

CriError criFsBinder_UnbindAsync ( CriFsBindId  bndrid)

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

引数
[in]bndridバインドID
戻り値
CriError エラーコード
説明:
バインドIDをバインダーから削除します。
本関数は即時復帰関数です。
指定されたバインドIDを削除できない場合、CRIERR_NGを返します。
アンバインド処理を進行させるには、サーバー処理 criFsExecuteMain 関数と、criFsBinder_GetStatus 関数の 呼び出しが必要です。
アンバインド完了の検知:
アンバインド処理の完了は criFsBinder_GetStatus 関数で取得されるステータスにより判断します。
アンバインド処理中のステータスは CRIFSBINDER_STATUS_UNBIND になります。
アンバインド完了後のステータスは CRIFSBINDER_STATUS_REMOVED となります。
補足:
バインドIDとして取り得る値で、その時点において使用されていない値を指定した場合、取得されるステータスは CRIFSBINDER_STATUS_REMOVEDになります。
アンバインドするバインドIDに依存している他のバインドIDも同時にアンバインドされます(暗黙的アンバインド)。
例えば、CPKバインドIDのコンテンツファイルをFILEバインドしているバインドIDは、 参照元のCPKバインドIDがアンバインドされると、暗黙的アンバンドされます。
暗黙的にアンバインドされた項目は、暗黙的アンバインドリストに追加されます。
暗黙的アンバインドされたバインドIDは、通常どおりにcriFsBinder_Unbind関数でアンバインドするか、 criFsBinder_CleanImplicitUnbindList関数で暗黙的アンバインドリストをクリアする必要があります。
例:
// CPKファイルのバインド
criFsBinder_BindCpk(bndrhn, NULL, cpkpath, cpkwk, cpkwksz, &bndrid);
:
// CPKバインドIDのアンバインド
// アンバインド完了待ち
while (1) {
criFsBinder_GetStatus(bndrid, &status);
// アンバインド完了
break;
// サーバー処理の実行
}
@ CRIFSBINDER_STATUS_REMOVED
Definition: cri_file_system.h:1122
CriError criFsBinder_UnbindAsync(CriFsBindId bndrid)
バインドIDの削除(アンバインド):即時復帰関数
参照
criFsBinder_BindCpk(), criFsBinder_BindFile(), criFsBinder_SetUserHeapFunc(), criFsBinder_CleanImplicitUnbindList()

◆ criFsBinder_CleanImplicitUnbindList()

CriError criFsBinder_CleanImplicitUnbindList ( void  )

暗黙的アンバインドリストのクリア

戻り値
CriError エラーコード
説明:
暗黙的アンバインドリストに登録されている全てのバインドIDを未使用リストへ戻します。
暗黙的アンバインドされるのバインドIDは、次の様な場合です。
・他のバインドIDに依存したファイルをバインドしている場合(CPKのコンテンツファイルなど)。
・親バインドIDがアンバインドされた場合。
参照
criFsBinder_Unbind()

◆ 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_BindCpk(), criFsBinder_BindFile(), criFsBinder_BindFiles()

◆ criFsBinder_Find()

CriError criFsBinder_Find ( CriFsBinderHn  bndrhn,
const CriChar8 *  filepath,
CriFsBinderFileInfo finfo,
CriBool *  exist 
)

ファイル情報の取得(ファイル名指定)

引数
[in]bndrhnバインダーハンドル
[in]filepathファイルのフルパス
[out]finfoファイル情報構造体
[out]existファイル検索結果(CRI_TRUE:取得成功 CRI_FALSE:取得失敗)
戻り値
CriError エラーコード
説明:
指定されたファイルをバインダーから検索し、その情報を返します。
バインド状態が CRIFSBINDER_STATUS_COMPLETE であるバインドIDのみを検索対象とします。
ファイルが見付かった場合は existにCRI_TRUEを、ファイル情報構造体(finfo)にファイル情報をセットします。
ファイルが見付からない場合、existにCRI_FALSEをセットします。
finfoがNULLの場合、existにファイルの検索結果のみをセットします。
例:
CriBool exist;
criFsBinder_Find(bndrhn, "a.txt", &finfo, &exist);
if (exist == CRI_TRUE) { // File is found.
}
else {// File cannot found.
}
CriError criFsBinder_Find(CriFsBinderHn bndrhn, const CriChar8 *filepath, CriFsBinderFileInfo *finfo, CriBool *exist)
ファイル情報の取得(ファイル名指定)
ファイル情報構造体
Definition: cri_file_system.h:1078
参照
criFsBinder_GetStatus()

◆ criFsBinder_FindById()

CriError criFsBinder_FindById ( CriFsBinderHn  bndrhn,
CriFsFileId  id,
CriFsBinderFileInfo finfo,
CriBool *  exist 
)

ファイル情報の取得(ID指定)

引数
[in]bndrhnバインダーハンドル
[in]idCPKコンテンツファイルID
[out]finfoファイル情報構造体
[out]existファイル検索結果(CRI_TRUE:取得成功 CRI_FALSE:取得失敗)
戻り値
CriError エラーコード
説明:
バインダーハンドルから、指定されたIDのファイルを検索し、その情報を返します。
ID情報つきCPKファイルをバインドしている必要があります。
バインド状態が CRIFSBINDER_STATUS_COMPLETE であるバインドIDのみを検索対象とします。
ファイルが見付かった場合は existにCRI_TRUEをセットし、ファイル情報構造体(finfo)にファイル情報をセットします。
ファイルが見付からない場合、existにCRI_FALSEをセットします。
finfoがNULLの場合、existにファイルの検索結果(CRI_TRUE/CRI_FALSE)のみをセットします。
例:
CriBool exist;
criFsBinder_FindById(bndrhn, 10, &finfo, &exist);
if (exist == CRI_TRUE) { // File is found.
}
else { // File cannot found.
}
CriError criFsBinder_FindById(CriFsBinderHn bndrhn, CriFsFileId id, CriFsBinderFileInfo *finfo, CriBool *exist)
ファイル情報の取得(ID指定)
参照
criFsBinder_GetStatus() criFsBinder_BindCpk()

◆ criFsBinder_GetHandle()

CriError criFsBinder_GetHandle ( CriFsBindId  bndrid,
CriFsBinderHn bndrhn 
)

CriFsBinderHnの取得

引数
[in]bndridバインドID
[out]bndrhnバインダーハンドル
戻り値
CriError エラーコード
説明:
CriFsBindIdをCriFsBinderHnに変換します。
新たにCriFsBinderHnを生成するものではなく、型変換を行うものと考えてください。
よって、実体としては同じものを指しており、本関数でCriFsBinderHnのリソースを消費することはありません。
元のCriFsBindIdもそのまま CriFsBindId として使用できます。
バインドされたファイルの情報を得る場合、バインドされたバインドIDが順に検索されます。
このため、特定のバインドIDにあるファイルにアクセスしたい場合、目的のバインドIDから バインダーハンドルを取得して使用することで、効率的な検索を行うことが可能になります。
注意:
本関数により取得された CriFsBinderHn は criFsBinder_Destroy 関数では破棄できません。 元となる CriFsBindId を criFsBinder_Unbind 関数でアンバインドしてください。
例:
// CPKをバインドする
criFsBinder_BindCpk(parent_bndrhn, NULL, cpkpath, work, worksize, &cpk_bndrid);
// バインドID からバインダーハンドルを得る
criFsBinder_GetHandle(cpk_bndrid, &cpk_bndrhn);
// このハンドルを用いてファイル情報を取得する
criFsBinder_Find(cpk_bndrhn, filepath, &finfo, &exist);
:
// バインドIDをアンバインドする。取得されたバインダーハンドルも使用できなくなる
criFsBinder_Unbind(cpk_bndrid);
CriError criFsBinder_GetHandle(CriFsBindId bndrid, CriFsBinderHn *bndrhn)
CriFsBinderHnの取得
参照
criFsBinder_Unbind

◆ criFsBinder_GetFileSize()

CriError criFsBinder_GetFileSize ( CriFsBinderHn  bndrhn,
const CriChar8 *  filepath,
CriSint64 *  size 
)

ファイルサイズの取得(ファイル名指定)

引数
[in]bndrhnバインダーハンドル
[in]filepathファイルのフルパス
[out]sizeファイルのサイズ
戻り値
CriError エラーコード
説明:
指定されたファイルのファイルサイズを取得します。
まず、bndrhn のバインダーから目的のファイルを検索します。
bndrhn に目的のファイルが存在しない場合、デフォルトデバイスのfilepathのファイルを探します。 このとき、ファイルをオープン待ちが入る場合があります。
バインド状態が CRIFSBINDER_STATUS_COMPLETE であるバインドIDが検索対象とします。
指定されたファイルが存在しない場合、sizeには負値が設定されます。
備考:
本関数は、内部的に criFsBinder_Find 関数を実行し、 ファイルがバインダーに登録されていなければファイルI/Oにアクセスしてファイルの有無を調べる、 という実装になっています。
(バインダーに登録されていないファイルや、存在しないファイルに対して本関数を実行した場合、 ファイルI/Oへのアクセスが発生し、長時間処理がブロックされる可能性があります。)

ファイルがバインダーに登録されているかどうかをチェックしたい場合には、 本関数の代わりに、 criFsBinder_Find 関数をご利用ください。
注意
以下のケースでは、本関数内で長時間処理がブロックされる場合があります。
  • バインダーハンドルにNULLを指定した場合
  • バインダーに登録されていないファイルを指定した場合
  • 無効なパス(存在しないファイル)を指定した場合
  • criFsBinder_BindDirectory関数でディレクトリをバインドしたハンドルを指定した場合
参照
criFsBinder_GetFileSizeById, criFsBinder_Find

◆ criFsBinder_GetFileSizeById()

CriError criFsBinder_GetFileSizeById ( CriFsBinderHn  bndrhn,
CriFsFileId  id,
CriSint64 *  size 
)

ファイルサイズの取得(ID指定)

引数
[in]bndrhnバインダーハンドル
[in]idファイルのID
[out]sizeファイルのサイズ
戻り値
CriError エラーコード
説明:
ファイルサイズを取得します。
ID情報つきCPKファイルがバインドされている必要があります。
bndrhn のバインダーから目的のファイルを検索します。 バインド状態が CRIFSBINDER_STATUS_COMPLETE であるCPKバインドIDのみを検索対象とします。
参照
criFsBinder_GetFileSize

◆ criFsBinder_GetRomAddress()

CriError criFsBinder_GetRomAddress ( CriFsBinderHn  bndrhn,
const CriChar8 *  filepath,
CriUint64Adr *  rom_address 
)

ROMアドレスの取得(ファイル名指定)

引数
[in]bndrhnバインダーハンドル
[in]filepathファイルのフルパス
[out]rom_addressROMアドレス
戻り値
CriError エラーコード
説明:
指定されたファイルのROMアドレスを取得します。
bndrhn のバインダーから目的のファイルを検索します。
バインド状態が CRIFSBINDER_STATUS_COMPLETE であるバインドIDが検索対象とします。
バインダーの使用は必須です。バインダーハンドルにはNULLは指定できません。 ディレクトリバインドはサポートしません。criFsBinder_BindDirectory で使用したハンドルは指定できません。 指定されたファイルが存在しない場合、rom_address には CRIFS_ROM_ADDRESS_INVALID が設定されます。
注意
ゲーム機向けでは非サポートです。この関数は呼び出さないでください。
参照
criFsBinder_GetRomAddress() criFsBinder_GetRomAddressById()

◆ criFsBinder_GetRomAddressById()

CriError criFsBinder_GetRomAddressById ( CriFsBinderHn  bndrhn,
CriFsFileId  id,
CriUint64Adr *  rom_address 
)

ROMアドレスの取得(ID指定)

引数
[in]bndrhnバインダーハンドル
[in]idファイルのID
[out]rom_addressROMアドレス
戻り値
CriError エラーコード
説明:
指定されたファイルのROMアドレスを取得します。
ID情報つきCPKファイルがバインドされている必要があります。
bndrhn のバインダーから目的のファイルを検索します。 バインド状態が CRIFSBINDER_STATUS_COMPLETE であるCPKバインドIDのみを検索対象とします。
指定されたファイルIDが存在しない場合、rom_address には CRIFS_ROM_ADDRESS_INVALID が設定されます。
注意
ゲーム機向けでは非サポートです。この関数は呼び出さないでください。
参照
criFsBinder_GetRomAddress() criFsBinder_GetRomAddressById()

◆ criFsBinder_GetPriority()

CriError criFsBinder_GetPriority ( CriFsBindId  bndrid,
CriSint32 *  priority 
)

プライオリティ値の取得

引数
[in]bndridバインドID
[out]priorityプライオリティ値
戻り値
CriError エラーコード
説明:
バインドIDのプライオリティ値を取得します。
プライオリティにより、バインダーハンドル内における、バインドIDの検索順を制御できます。
バインド時のプライオリティ値は0です。
同プライオリティ内の検索順は、後に criFsBinder_SetPriority が指定された順番になります。 criFsBinder_SetPriority が呼び出されていない場合、先にバインドされた順番になります。 プライオリティ値の大きい方が高プライオリティとなり、検索順が高くなります。
参照
criFsBinder_SetPriority()

◆ criFsBinder_SetPriority()

CriError criFsBinder_SetPriority ( CriFsBindId  bndrid,
CriSint32  priority 
)

プライオリティ値の設定

引数
[in]bndridバインドID
[in]priorityプライオリティ値
戻り値
CriError エラーコード
説明:
バインドIDにプライオリティを設定します。
プライオリティにより、バインダーハンドル内における、バインドIDの検索順を制御できます。
バインド時のプライオリティ値は0です。
同プライオリティ内の検索順は、後に criFsBinder_SetPriority が指定された順番になります。 criFsBinder_SetPriority が呼び出されていない場合、先にバインドされた順番になります。 プライオリティ値の大きい方が高プライオリティとなり、検索順が高くなります。
例:
// a.cpk(a_id), b.cpk(b_id) の順にバインド
criFsBinder_BindCpk(bndrhn, NULL, "a.cpk", a_wk, a_wksz, a_id);
criFsBinder_BindCpk(bndrhn, NULL, "b.cpk", a_wk, a_wksz, b_id);
// この時点では a_id, b_idの順に検索される。
:
// b_id のプライオリティをデフォルト値よりも上げたので、
// 検索順は b_id, a_id となる。
CriError criFsBinder_SetPriority(CriFsBindId bndrid, CriSint32 priority)
プライオリティ値の設定
参照
criFsBinder_GetPriority()

◆ criFsBinder_SetCurrentDirectory()

CriError criFsBinder_SetCurrentDirectory ( CriFsBindId  bndrId,
const CriChar8 *  path,
void *  work,
CriSint32  worksize 
)

カレントディレクトリの設定

引数
[in]bndrIdバインドID
[in]pathカレントディレクトリ
[in]workカレントディレクトリ名保存用ワーク領域
[in]worksizeカレントディレクトリ名保存用ワーク領域サイズ
戻り値
CriError エラーコード
説明:
バインドIDにカレントディレクトリを設定します。
必要なワーク領域が確保できない場合、カレントディレクトリの設定に失敗します。
この場合、既に設定されているカレントディレクトリ設定は破棄されます。
バインドIDを利用してファイルを参照する際に、カレントディレクトリがパス名の前に付加されます。
指定するワーク領域のサイズは、設定するカレントディレクトリ名を格納するために使用されます。
最低でも、strlen(path)+1 バイトの領域を確保して渡してください。 メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にNULL(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。
例:
// バインド直後は、カレントディレクトリは設定されていない。
criFsBinder_BindCpk(bndrhn, NULL, "cpk.cpk", wk, wksz, bndrid);
:
criFsBinder_Find(bndrhn, "a.txt", NULL, &exist); // "a.txt" で検索される
:
// カレントディレクトリ"/folder/"を設定
worksz = strlen("/folder/")+1;
work = malloc(worksz);
criFsBinder_SetCurrentDirectory(bndrid, "/folder/", work, worksz);
criFsBinder_Find(bndrhn, "a.txt", NULL, &exist); // "/folder/a.txt" で検索される
CriError criFsBinder_SetCurrentDirectory(CriFsBindId bndrId, const CriChar8 *path, void *work, CriSint32 worksize)
カレントディレクトリの設定
参照
criFsBinder_SetUserHeapFunc()

◆ criFsBinder_GetContentsFileInfo()

CriError criFsBinder_GetContentsFileInfo ( CriFsBinderHn  bndrhn,
const CriChar8 *  path,
CriFsBinderContentsFileInfo cfinf 
)

CPKコンテンツファイル情報の取得

引数
[in]bndrhnバインダーハンドル
[in]pathコンテンツファイルパス名
[out]cfinfCriFsBinderContentsFileInfo構造体へのポインター
戻り値
CriError エラーコード
説明:
ファイル名情報付きCPKファイルから、指定されたコンテンツファイル名のファイル情報を取得します。
指定されたコンテンツファイルを格納しているCPKが、ファイル名情報付CPKである必要があります。
指定したバインダーハンドルに、同じ名前のファイルが複数存在する場合、最初に見付けたファイルを 格納しているCPKが選択されます。
特定のCPKファイルを直接指定したい場合、criFsBinder_GetHandle関数により、そのCPKのバインダーIDから バインダーハンドルを取得し、本関数の引数としてください。
注意:
本機能を使用するには、『CPK File Builder Ver.1.03以降』を使用して作成した、ファイル名情報付CPKを 用いる必要があります。
例:
// CPKをバインド
criFsBinder_BindCpk(parent_bndrhn, NULL, cpkpath, work, worksize, &cpk_bndrid);
// コンテンツファイルの情報を取得
criFsBinder_GetContentsFileInfo(parent_bndrhn, CPK_CONTENTS_FILENAME, &cfinf);
CriError criFsBinder_GetContentsFileInfo(CriFsBinderHn bndrhn, const CriChar8 *path, CriFsBinderContentsFileInfo *cfinf)
CPKコンテンツファイル情報の取得
コンテンツファイル情報構造体
Definition: cri_file_system.h:1096

◆ criFsBinder_GetContentsFileInfoById()

CriError criFsBinder_GetContentsFileInfoById ( CriFsBinderHn  bndrhn,
CriFsFileId  id,
CriFsBinderContentsFileInfo cfinf 
)

CPKコンテンツファイル情報の取得

引数
[in]bndrhnバインダーハンドル
[in]idファイルID
[out]cfinfCriFsBinderContentsFileInfo構造体へのポインター
戻り値
CriError エラーコード
説明:
ID+ファイル名情報付きCPKファイルから、指定されたファイルIDのファイル情報を取得します。
指定されたファイルを格納しているCPKが、ID+ファイル名情報付CPKである必要があります。
指定したバインダーハンドルに、同じIDのファイルが複数存在する場合、最初に見付けたファイルを 格納しているCPKが選択されます。
特定のCPKファイルを直接指定したい場合、criFsBinder_GetHandle関数により、そのCPKのバインドIDから バインダーハンドルを取得し、本関数の引数としてください。
注意:
本機能を使用するには、『CPK File Builder Ver.1.03以降』を使用して作成した、ID+ファイル名情報付CPKを 用いる必要があります。
例:
// CPKをバインド
criFsBinder_BindCpk(parent_bndrhn, NULL, cpkpath, work, worksize, &cpk_bndrid);
// ID 0x00000010 のファイル情報を取得
criFsBinder_GetContentsFileInfoById(parent_bndrhn, 0x00000010, &cfinf);
CriError criFsBinder_GetContentsFileInfoById(CriFsBinderHn bndrhn, CriFsFileId id, CriFsBinderContentsFileInfo *cfinf)
CPKコンテンツファイル情報の取得

◆ criFsBinder_GetContentsFileInfoByIndex()

CriError criFsBinder_GetContentsFileInfoByIndex ( CriFsBindId  bndrid,
CriSint32  index,
CriFsBinderContentsFileInfo cfinf,
CriSint32  n 
)

Index指定によるCPKコンテンツファイル情報の取得

引数
[in]bndridバインドID
[in]index情報を取得するコンテンツファイルの先頭INDEX
[out]cfinfCriFsBinderContentsFileInfo構造体配列
[in]n情報を取得するコンテンツファイルの数
戻り値
CriError エラーコード
説明:
CPKファイルのコンテンツファイル、indexからn個分のファイル情報を取得します。
indexはCPK作成時、コンテンツファイルに対して0から割付られます。
index, nの上限値はcriFsBinder_GetBinderIdInfo関数で取得されるファイル数となります。 IDのみのモードで作成されたCPKは、「ディレクトリ名」、「ファイル名」、「ユーザー文字列」の情報を持たないため、 CriFsBinderContentsFileInfo構造体配列の該当メンバには NULL が格納されます。
例:CPKの全コンテンツファイル情報を取得する
// CPKをバインド
criFsBinder_BindCpk(parent_bndrhn, NULL, cpkpath, work, worksize, &cpk_bndrid);
: // CPKバインド完了を待つ。
:
// CPKのコンテンツファイル数を取得する。
criFsBinder_GetBinderIdInfo(cpk_bndrid, &binf);
// コンテンツファイル数全ての情報を取得するための情報格納領域を確保する。
cfinf = malloc(sizeof(CriFsBinderContentsFileInfo)*binf.nfiles);
// CPKの全コンテンツファイルの情報を取得する
criFsBinder_GetContentsFileInfoByIndex(cpk_bndrid, 0, cfinf, binf.nfiles);
CriError criFsBinder_GetContentsFileInfoByIndex(CriFsBindId bndrid, CriSint32 index, CriFsBinderContentsFileInfo *cfinf, CriSint32 n)
Index指定によるCPKコンテンツファイル情報の取得
CriError criFsBinder_GetBinderIdInfo(CriFsBindId bndrid, CriFsBinderInfo *binf)
バインドID情報の取得
バインダー情報
Definition: cri_file_system.h:1171
CriSint32 nfiles
Definition: cri_file_system.h:1175
例:CPKの一部コンテンツファイル(Index5番から10ファイル分)の情報を取得する
#define CNTNTS_INDX (5) // INDEX 5から
#define CNTNTS_N (10) // 10コンテンツファイル
// CPKをバインド
criFsBinder_BindCpk(parent_bndrhn, NULL, cpkpath, work, worksize, &cpk_bndrid);
: // CPKバインド完了を待つ。
:
// 取得するコンテンツファイル数分の情報を取得するための情報格納領域を確保する。
cfinf = malloc(sizeof(CriFsBinderContentsFileInfo)*CNTNTS_N);
// CPKの全コンテンツファイルの情報を取得する
criFsBinder_GetContentsFileInfoByIndex(cpk_bndrid, CNTNTS_INDX, cfinf, CNTNTS_N);
備考:
情報取得に失敗した場合であっても、本関数はエラー値を返さない場合があります。
ただし、その場合であっても、コンテンツファイル情報のファイル名がNULLでかつ、IDが-1になっている事から、 情報取得に失敗した事を判定可能です。

◆ criFsBinder_GetContentsFileUserString()

CriError criFsBinder_GetContentsFileUserString ( CriFsBinderHn  bndrhn,
const CriChar8 *  path,
CriChar8 *  ustr,
CriSint32  length 
)

CPKコンテンツファイル情報に含まれるユーザー文字列の取得

引数
[in]bndrhnバインダーハンドル
[in]pathコンテンツファイルパス名
[out]ustrユーザー文字列格納領域
[in]lengthユーザー文字列格納領域サイズ(単位はバイト)
戻り値
CriError エラーコード
説明:
ファイル名情報付きCPKファイルから、指定されたコンテンツファイル名のファイル情報に含まれるユーザー文字列を取得します。
指定されたコンテンツファイルを格納しているCPKが、ファイル名情報付CPKである必要があり、
なおかつファイル情報にユーザー文字列が付与されている必要があります。
ユーザー文字列を付与するためには、CPK File Builder (GUI ツール) ならば「ファイル情報にアトリビュート文字列を埋め込む」を有効に、
CRI Packed File Makerコンソール版ならば「-attrstring」オプションを指定してCPKを作成してください。
詳細な作成方法はツールのマニュアルを参照してください。
CPKが上記の設定で作成されていない場合、本関数は失敗し、エラーを返します。
この場合、ustr には NULL が格納されます。
CPKは上記の設定で作成されたが、アトリビュートが指定されていないコンテンツファイルが本関数に指定された場合、
エラーは発生せずに ustr には "\0" が格納されます。
指定したバインダーハンドルに、同じ名前のファイルが複数存在する場合、最初に見付けたファイルを 格納しているCPKが選択されます。
特定のCPKファイルを直接指定したい場合、criFsBinder_GetHandle関数により、そのCPKのバインダーIDから バインダーハンドルを取得し、本関数の引数としてください。
注意:
本機能を使用するには、『CPK File Builder Ver.1.03以降』を使用して作成した、ファイル名情報付CPKを 用いる必要があります。
注意:
ユーザー文字列の長さの制約は CRI File System ライブラリでは設けておりません。
ユーザー側でユーザー文字列の最大長を規定し、十分な格納領域を確保してください。
CPKツールのアトリビュート文字列を埋め込む機能でユーザー文字列を指定した場合、
"CRI_CFATTR:" という接頭辞が付与されますので、その分のサイズも考慮する必要があります。
ユーザー文字列の終端まで収まらないほど格納領域サイズが小さい場合は、格納領域の末尾を終端文字に置換し、警告を返します。
例:
CriChar8 ustr[256];
// CPKをバインド
criFsBinder_BindCpk(parent_bndrhn, NULL, cpkpath, work, worksize, &cpk_bndrid);
// コンテンツファイルの情報に含まれるユーザー文字列を取得
criFsBinder_GetContentsFileUserString(parent_bndrhn, CPK_CONTENTS_FILENAME, &ustr, 256);
CriError criFsBinder_GetContentsFileUserString(CriFsBinderHn bndrhn, const CriChar8 *path, CriChar8 *ustr, CriSint32 length)
CPKコンテンツファイル情報に含まれるユーザー文字列の取得

◆ criFsBinder_GetContentsFileUserStringById()

CriError criFsBinder_GetContentsFileUserStringById ( CriFsBinderHn  bndrhn,
CriFsFileId  id,
CriChar8 *  ustr,
CriSint32  length 
)

CPKコンテンツファイル情報に含まれるユーザー文字列の取得 (ID指定)

引数
[in]bndrhnバインダーハンドル
[in]idファイルID
[out]ustrユーザー文字列格納領域
[in]lengthユーザー文字列格納領域サイズ(単位はバイト)
戻り値
CriError エラーコード
説明:
ID+ファイル名情報付きCPKファイルから、指定されたファイルIDのファイル情報に含まれるユーザー文字列を取得します。
指定されたファイルを格納しているCPKが、ID+ファイル名情報付CPKである必要があり、
なおかつファイル情報のユーザー文字列が付与されている必要があります。
ユーザー文字列を付与するためには、CPK File Builder (GUI ツール) ならば「ファイル情報にアトリビュート文字列を埋め込む」を有効に、
CRI Packed File Makerコンソール版ならば「-attrstring」オプションを指定してCPKを作成してください。
詳細な作成方法はツールのマニュアルを参照してください。
CPKが上記の設定で作成されていない場合、本関数は失敗し、エラーを返します。
この場合、ustr には NULL が格納されます。
CPKは上記の設定で作成されたが、アトリビュートが指定されていないコンテンツファイルが本関数に指定された場合、
エラーは発生せずに ustr には "\0" が格納されます。
指定したバインダーハンドルに、同じIDのファイルが複数存在する場合、最初に見付けたファイルを 格納しているCPKが選択されます。
特定のCPKファイルを直接指定したい場合、criFsBinder_GetHandle関数により、そのCPKのバインドIDから バインダーハンドルを取得し、本関数の引数としてください。
注意:
本機能を使用するには、『CPK File Builder Ver.1.03以降』を使用して作成した、ID+ファイル名情報付CPKを 用いる必要があります。
注意:
ユーザー文字列の長さの制約は CRI File System ライブラリでは設けておりません。
ユーザー側でユーザー文字列の最大長を規定し、十分な格納領域を確保してください。
CPKツールのアトリビュート文字列を埋め込む機能でユーザー文字列を指定した場合、
"CRI_CFATTR:" という接頭辞が付与されますので、その分のサイズも考慮する必要があります。
ユーザー文字列の終端まで収まらないほど格納領域サイズが小さい場合は、格納領域の末尾を終端文字に置換し、警告を返します。
例:
CriChar8 ustr[256];
// CPKをバインド
criFsBinder_BindCpk(parent_bndrhn, NULL, cpkpath, work, worksize, &cpk_bndrid);
// ID 0x00000010 のファイル情報に含まれるユーザー文字列を取得
criFsBinder_GetContentsFileUserStringById(parent_bndrhn, 0x00000010, &ustr, 256);
CriError criFsBinder_GetContentsFileUserStringById(CriFsBinderHn bndrhn, CriFsFileId id, CriChar8 *ustr, CriSint32 length)
CPKコンテンツファイル情報に含まれるユーザー文字列の取得 (ID指定)

◆ criFsBinder_GetBinderIdInfo()

CriError criFsBinder_GetBinderIdInfo ( CriFsBindId  bndrid,
CriFsBinderInfo binf 
)

バインドID情報の取得

引数
[in]bndridバインドID
[out]binf取得情報
戻り値
CriError エラーコード
説明:
指定されたバインドIDのバインダー種別(CPK/ファイル/ディレクトリ等)やバインドしたファイル名、プライオリティ設定などの 情報を取得します。

◆ criFsBinder_GetNumberOfGroupFiles()

CriError criFsBinder_GetNumberOfGroupFiles ( CriFsBindId  bndrid,
const CriChar8 *  groupname,
const CriChar8 *  attrname,
CriSint32 *  groupfiles 
)

グループファイル数の取得

引数
[in]bndridバインドID
[in]groupnameグループ名
[in]attrnameアトリビュート名
[out]groupfilesグループファイル数
戻り値
CriError エラーコード
説明:
指定したバインドID、グループ名、アトリビュート名に適合するファイルの数を取得します。
適合するファイルが存在しない場合、ファイル数は0になります。
グループ情報付きのCPKファイルをバインドしたバインドIDを指定する必要があります。
無効なバインドIDを指定した場合、エラーコールバックが起きます。
アトリビュート名にNULLを指定した場合、指定グループに属する全てのファイルがグループロードの対象となります。
また、パッキングツールのアトリビュート指定を「none」とした場合も、アトリビュート名にNULLを指定してください。

◆ criFsBinder_GetTotalGroupDataSize()

CriError criFsBinder_GetTotalGroupDataSize ( CriFsBindId  bndrid,
const CriChar8 *  groupname,
const CriChar8 *  attrname,
CriSint64 *  datasize 
)

グループロードサイズの取得

引数
[in]bndridバインドID
[in]groupnameグループ名
[in]attrnameアトリビュート名
[out]datasizeグループロードサイズ
戻り値
CriError エラーコード
説明:
指定したバインドID、グループ名、アトリビュート名に適合するグループのロードに必要な読込領域のサイズを取得します。
アライメントなども加味されたデータサイズとなります。
適合するファイルが存在しない場合、グループロードサイズは0になります。
グループ情報付きのCPKファイルをバインドしたバインドIDを指定する必要があります。
無効なバインドIDを指定した場合、エラーコールバックが起きます。
アトリビュート名にNULLを指定した場合、指定グループに属する全てのファイルがグループロードの対象となります。
また、パッキングツールのアトリビュート指定を「none」とした場合も、アトリビュート名にNULLを指定してください。

◆ criFsBinder_GetWorkSizeForCpkIdAccessTable()

CriError criFsBinder_GetWorkSizeForCpkIdAccessTable ( CriFsBindId  bindrid,
CriSint32  steps,
CriSint32 *  worksize 
)

ID情報付CPKのアクセス情報テーブル作成用ワークサイズ取得

引数
[in]bindridバインドID
[in]stepsアクセス情報テーブル作成の作成間隔
[out]worksizeアクセス情報テーブル作成用ワーク領域のサイズ
戻り値
CriError エラーコード
説明:
ID情報付CPKのアクセス情報テーブルの作成に必要なワーク領域のサイズを取得します。
アクセス情報テーブルとは、CPKのコンテンツファイルにアクセスする際の処理を前もって行うことで、 アクセス速度を向上させるためのものです。
ID情報のないCPKではアクセステーブルは必要ありません。 本関数はID情報付CPKに対してのみ有効です。
本関数は完了復帰関数です。
アクセス情報テーブルの領域は、該当CPKがバインドされている間は解放したり、他へ転用しないでください。
アクセス情報テーブルの作成間隔について
stepsに1を指定した場合、全てのコンテンツファイルに対するアクセス情報テーブルが作成されます。 この場合、アクセス情報テーブルの要素数はコンテンツファイル数と同じになります。
stepsに1より大きい値を指定した場合は、指定stepsおきのコンテンツファイルに対するアクセス情報テーブルが作成されます。 アクセス情報テーブルの要素数はstepsに応じて変化します。
全てのコンテンツファイルに対するテーブルを準備しないので、stepsに1を設定したときに比べて、 ファイルアクセス時の処理がかかりますが、アクセス情報テーブルの領域を小さくできます。

◆ criFsBinder_SetupCpkIdAccessTable()

CriError criFsBinder_SetupCpkIdAccessTable ( CriFsBindId  binderid,
CriSint32  steps,
void *  work,
CriSint32  worksize 
)

ID情報付CPK アクセス情報テーブルの作成

引数
[in]binderidバインドID
[in]stepsアクセス情報テーブル作成の作成間隔
[in]workアクセス情報テーブル作成用ワーク領域
[in]worksizeアクセス情報テーブル作成用ワーク領域のサイズ
戻り値
CriError エラーコード
説明:
ID情報付CPKのアクセス情報テーブルを作成します。
アクセス情報テーブルを作成した場合、該当CPKのコンテンツへのアクセスが高速になります。 本関数は完了復帰関数です。コンテンツファイル数が多い場合、復帰までに時間がかかる場合があります。
ID情報のないCPKではアクセステーブルは作成されません。
本関数はID情報付CPKに対してのみ有効です。
アクセス情報テーブルの領域は、該当CPKがバインドされている間は解放したり、他へ転用しないでください。
アクセス情報テーブルの領域は、該当CPKをアンバインドした後に解放してください。

◆ criFsBinder_CloseFile()

CriError criFsBinder_CloseFile ( CriFsBindId  bind_id,
CriFsLoaderStatus internal_loader_status 
)

バインド中のファイルの一時クローズ

引数
[in]bind_idバインドID
[out]internal_loader_status内部ローダーステータス
戻り値
CriError エラーコード
説明:
バインド中のファイルを一旦クローズします。
criFsBinder_Unbind 関数と異なり、 CPKファイルのTOC情報をメモリ上に残したままファイルのみをクローズします。
(バインドIDに紐付けられているネイティブファイルのハンドルがクローズされます。)
備考:
本関数は、CPKファイルはバインドした状態にしておきたいが、 他のファイルをオープンするため、一時的にファイルハンドルを解放したい場合等に使用します。
※ファイルハンドル等のハードウェアリソースがプラットフォームで利用可能な上限数に達しない限り、 本関数を使用する必要はありません。

本関数は同期APIです。
本関数を実行すると、ファイルのオープン完了まで処理がブロックされます。
オープン処理を非同期に行いたい場合には、本関数の代わりに criFsBinder_CloseFileAsync 関数をご使用ください。
注意
本関数でクローズしたCPKファイルに対してアクセスすると、リードエラーが発生します。
本関数実行後、 criFsBinder_ReopenFile 関数を実行するまでの間、 当該CPKファイルに対するアクセスが発生しないよう制御する必要があります。

本関数は、CPKファイルを直接バインドしているケースでのみ利用可能です。
ディレクトリバインドを使用しているケースや、ファイルバインドを使用しているケース、 CPKファイル内のコンテンツをバインドしているケースでは、本関数は使用できません。
参照
criFsBinder_ReopenFile

◆ criFsBinder_ReopenFile()

CriError criFsBinder_ReopenFile ( CriFsBindId  bind_id,
CriFsLoaderStatus internal_loader_status 
)

一時クローズファイルの再オープン

引数
[in]bind_idバインドID
[out]internal_loader_status内部ローダーステータス
戻り値
CriError エラーコード
説明:
criFsBinder_CloseFile 関数等でクローズしたファイルを再度オープンし直します。
備考:
本関数は同期APIです。
本関数を実行すると、ファイルのオープン完了まで処理がブロックされます。
オープン処理を非同期に行いたい場合には、本関数の代わりに criFsBinder_ReopenFileAsync 関数をご使用ください。
注意
リードエラー等によりファイルの再オープンに失敗した場合、 第 2 引数( internal_loader_status )が CRIFSLOADER_STATUS_ERROR になります。
参照
criFsBinder_CloseFile

◆ criFsBinder_CloseFileAsync()

CriError criFsBinder_CloseFileAsync ( CriFsBindId  bind_id,
CriFsLoaderHn internal_loader 
)

バインド中のファイルの一時クローズ

引数
[in]bind_idバインドID
[out]internal_loader内部ローダーハンドル
戻り値
CriError エラーコード
説明:
バインド中のファイルを一旦クローズします。
処理が非同期な点を除き、 criFsBinder_CloseFile 関数と同様の操作を行います。
備考:
本関数は非同期処理用のAPIです。
本関数を実行すると、ファイルのクローズ完了を待つことなく処理が復帰します。

ファイルのクローズが完了したかどうかは、第 2 引数( internal_loader ) で返されるローダーハンドルを使用してチェックします。
(クローズ処理が完了したタイミングで、ローダーハンドルのステータスが CRIFSLOADER_STATUS_COMPLETE に遷移します。)
注意
第 2 引数( internal_loader )で返されるローダーハンドルは、 ライブラリ内でファイルアクセスのために使用される内部リソースです。
このハンドルをアプリケーション中で破棄しないでください。
参照
criFsBinder_CloseFile

◆ criFsBinder_ReopenFileAsync()

CriError criFsBinder_ReopenFileAsync ( CriFsBindId  bind_id,
CriFsLoaderHn internal_loader 
)

一時クローズファイルの再オープン

引数
[in]bind_idバインドID
[out]internal_loader内部ローダーハンドル
戻り値
CriError エラーコード
説明:
criFsBinder_CloseFile 関数等でクローズしたファイルを再度オープンし直します。
処理が非同期な点を除き、 criFsBinder_ReopenFile 関数と同様の操作を行います。
備考:
本関数は非同期処理用のAPIです。
本関数を実行すると、ファイルのオープン完了を待つことなく処理が復帰します。

ファイルのオープンが完了したかどうかは、第 2 引数( internal_loader ) で返されるローダーハンドルを使用してチェックします。
(オープン処理が完了したタイミングで、ローダーハンドルのステータスが CRIFSLOADER_STATUS_COMPLETE に遷移します。)
ファイルオープンの完了を確認した後、::criFsBinder_CompleteAsyncFileReopen 関数を使い、
バインドIDに対してファイルの再オープンを完了してください。
注意
第 2 引数( internal_loader )で返されるローダーハンドルは、 ライブラリ内でファイルアクセスのために使用される内部リソースです。
このハンドルをアプリケーション中で破棄しないでください。

リードエラー等によりファイルの再オープンに失敗した場合、 第 2 引数( internal_loader_status )で返されたローダーハンドルのステータスが CRIFSLOADER_STATUS_ERROR になります。
参照
criFsBinder_ReopenFile

◆ criFsBinder_CompleteAsyncFileReopen()

CriError criFsBinder_CompleteAsyncFileReopen ( CriFsBindId  bind_id)

一時クローズファイルの再オープン反映

引数
[in]bind_idバインドID
戻り値
CriError エラーコード
説明:
criFsBinder_ReopenFileAsync 関数によるファイルの再オープン情報を、
バインドIDに反映させ、再オープン処理を完了します。
criFsBinder_ReopenFileAsync 関数の実行で取得したローダーハンドルのステータスが
CRIFSLOADER_STATUS_COMPLETE に遷移した事を確認してから実行してください。
ファイルを再オープンしたバインドIDに対して、
本関数を実行せずにロードを実行すると、ロードに失敗します。
criFsBinder_ReopenFile 関数に対しては本関数を実行する必要はありません。
注意
ファイル再オープン用ローダーハンドルのステータスが
CRIFSLOADER_STATUS_COMPLETE 以外の状態で本関数を実行すると、
本関数はエラーを返します。

◆ criFsBinder_SetPathSeparatorForBindFiles()

CriError criFsBinder_SetPathSeparatorForBindFiles ( const CriChar8 *  filter)

複数ファイルバインド用パスセパレータの指定

引数
[in]filterセパレータとして使用する文字の一覧
戻り値
CriError エラーコード
説明:
criFsBinder_BindFiles 関数がセパレータとして解釈する文字を変更します。

criFsBinder_BindFiles 関数を使って複数のファイルをバインドする場合、 ファイルパスをセパレータで結合した文字列を指定する必要があります。
デフォルト状態では、CRI File Systemライブラリは「,」「\t」「\n」 の3つをセパレータとして扱います。
セパレータに上記以外の文字を使用したい場合、 本関数でセパレータに該当する文字を変更することが可能です。

第一引数の filter には、 セパレータとして使用する文字の一覧を格納した文字列を指定します。
例えば、 "@+-*" を指定した場合、 「@」「+」「-」「*」の4種類の文字がセパレータとして扱われます。
備考:
filter に空文字列("")を指定した場合、セパレータが無効になります。
filter に NULL を指定した場合、設定がデフォルト状態に戻ります。
注意
criFsBinder_BindFiles 関数以外の関数にセパレータを含むパスを渡した場合、 CRI File Systemライブラリは不正なパスとして処理されます。
(セパレータ以降のパスが無効になります。)
criFsBinder_BindFiles 関数を使用しない場合でも、 アプリケーション中で「,」「\t」「\n」を含むパスを扱う場合には、 本関数で事前にセパレータに変更しておく必要があります。

フィルターに指定できる文字の最大数は、現状 7 文字までです。

◆ criFsLoader_Create()

CriError criFsLoader_Create ( CriFsLoaderHn loader)

CRI File System - Loader オブジェクト

説明:
CriFsLoaderとはファイルデータを簡単に読み出すためのモジュールです。

CriFsLoaderの作成

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

◆ criFsLoader_GetWorkSize()

CriError criFsLoader_GetWorkSize ( CriSint32 *  work_size)

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

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

◆ criFsLoader_CreateWithWork()

CriError criFsLoader_CreateWithWork ( CriFsLoaderHn loader,
void *  work,
CriSint32  work_size 
)

CriFsLoaderの作成

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

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

ワーク領域のサイズは criFsLoader_GetWorkSize 関数で取得可能です。
ローダー作成前に criFsLoader_GetWorkSize 関数で取得したサイズ分のメモリを確保し、本関数に指定してください。
注意
ローダーを破棄する( criFsLoader_Destroy 関数を実行する)までは、ワーク領域に対する読み書きが発生します。
ワーク領域として指定したメモリは、ローダーを破棄するまでは解放しないでください。
参照
criFsLoader_GetWorkSize

◆ criFsLoader_Destroy()

CriError criFsLoader_Destroy ( CriFsLoaderHn  loader)

CriFsLoaderの破棄

引数
[in]loaderCriFsLoaderハンドル
戻り値
CriError エラーコード
説明:
CriFsLoaderを破棄します。
注意
本関数をロード完了コールバック内で実行しないでください。
参照
criFsLoader_Create

◆ criFsLoader_SetLoadEndCallback()

CriError criFsLoader_SetLoadEndCallback ( CriFsLoaderHn  loader,
CriFsLoaderLoadEndCbFunc  func,
void *  obj 
)

ロード完了コールバックの登録

引数
[in]loaderCriFsLoaderハンドル
[in]funcコールバック関数
[in]objコールバック関数へ渡す引数
戻り値
CriError エラーコード
説明:
ロード完了時に実行されるコールバック関数を登録します。
ロード完了コールバックは、ローダーのステータスが CRIFSLOADER_STATUS_LOADING から 他のステータスに遷移した直後に呼び出されます。
( CRIFSLOADER_STATUS_COMPLETE 以外にも、 CRIFSLOADER_STATUS_STOP や CRIFSLOADER_STATUS_ERROR に遷移する際にもコールバックは実行されます。)
備考:
厳密には、ステータス遷移〜コールバック実行までの間に他の処理が割り込みで動作する 余地があるため、ステータス遷移とコールバック実行のタイミングがズレる可能性があります。
注意
ロード完了コールバックは、 criFsLoader_Load 関数が CRIERR_OK を返す場合にのみ呼び出されます。
criFsLoader_Load 関数に不正な引数を渡した場合等、 ロード処理自体が開始されない場合(ローダーのステータスが CRIFSLOADER_STATUS_LOADING にならない場合)には、ロード完了コールバック自体が実行されません。

ロード処理やロード完了コールバックの呼び出しは、 criFsLoader_Load 関数を実行したスレッドとは別のスレッドで実行される可能性があります。
ほとんどの場合、他スレッドでのファイル読み込みが完了する前に criFsLoader_Load 関数から処理は復帰しますが、 何らしかの理由で criFsLoader_Load 関数を実行するスレッドの動作が遅れた(または別スレッドでの処理が瞬時に完了した)場合、 criFsLoader_Load 関数から復帰する前にロード完了コールバックが呼び出される形になります。

ロード完了後に呼び出されるロード完了コールバック関数は、 『ロード開始時点で登録済みのコールバック関数』です。
そのため、ロード処理開始〜ロード完了までの間にロード完了コールバックを登録し直したとしても、 呼び出される関数は変更されません。
(登録し直したロード完了コールバック関数が使用されるのは、次回ロード処理実行時となります。)

ロード完了コールバック内で参照されるオブジェクトは、 ローダーのステータスが完了状態(または停止状態)になった場合でも、 ロード完了コールバックが実行されるまでは解放しないでください。
(ステータス遷移後、ロード完了コールバックが実行されるまでは、 登録済みのコールバックパラメータが参照される可能性があります。)

コールバックを登録した状態でロード処理を行っているローダーを criFsLoader_Destroy 関数で破棄した場合、 criFsLoader_Destroy 関数内でロード完了コールバックが実行される可能性があります。

ロード完了コールバックを実行している間、他のファイルのロードがブロックされます。
そのため、ロード完了コールバック内で負荷の高い処理を行なわないよう、ご注意ください。

ロード完了コールバック内でローダーのステータス遷移を待つ処理を行わないでください。
ローダーのステータス更新は、ロード完了コールバックと同一のスレッド上で行われます。
そのため、ロード完了コールバック内でステータス遷移を待つ処理を行うと、 デッドロックが発生し、処理が進まなくなります。

コールバック関数はローダー内のメモリ領域に対して登録されます。
そのため、ロード完了コールバック内でローダーを破棄することはできません。
(ロード完了コールバック内で criFsLoader_Destroy 関数を実行すると、 エラーが発生します。)

コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

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

◆ criFsLoader_SetInplaceDecryptionCbFunc()

CriError criFsLoader_SetInplaceDecryptionCbFunc ( CriFsLoaderHn  loader,
CriFsInplaceDecryptionCbFunc  func,
void *  obj 
)

◆ criFsLoader_Load()

CriError criFsLoader_Load ( CriFsLoaderHn  loader,
CriFsBinderHn  binder,
const CriChar8 *  path,
CriSint64  offset,
CriSint64  load_size,
void *  buffer,
CriSint64  buffer_size 
)

データのロード

引数
[in]loaderCriFsLoaderハンドル
[in]binderCriFsBinderハンドル
[in]pathファイルパス名
[in]offsetファイルの先頭からのオフセット位置
[in]load_sizeロードサイズ
[in]bufferバッファーへのポインター
[in]buffer_sizeバッファーのサイズ
戻り値
CriError エラーコード
説明:
指定されたバインダーとファイル名で、データの読み込みを開始します。
ファイル内の offset バイト目から、load_size バイト分読み込みます。
本関数は即時復帰関数です。
ロードの完了状態を取得するには criFsLoader_GetStatus関数を使用してください。
また、本関数は指定された CriFsBinder ハンドルを介して CPK ファイル内の圧縮コンテンツを読み込むこともできます。
注意
圧縮コンテンツの読み込みに際して、0 より大きなオフセット位置を指定した場合はエラーになります。
また、圧縮コンテンツコンテンツを先頭から一部分だけ読み込むということもできません。コンテンツ全体を読み込んでください。
参照
criFsLoader_GetStatus

◆ criFsLoader_LoadById()

CriError criFsLoader_LoadById ( CriFsLoaderHn  loader,
CriFsBinderHn  binder,
CriFsFileId  id,
CriSint64  offset,
CriSint64  load_size,
void *  buffer,
CriSint64  buffer_size 
)

データのロード (CPKファイル内のファイルIDを指定)

引数
[in]loaderCriFsLoaderハンドル
[in]binderCriFsBinderハンドル
[in]idファイルID
[in]offsetファイルの先頭からのオフセット位置
[in]load_sizeロードサイズ
[in]bufferバッファーへのポインター
[in]buffer_sizeバッファーのサイズ
戻り値
CriError エラーコード
説明:
指定されたバインダーとファイルIDで、データの読み込みを開始します。
ファイル内の offset バイト目から、load_size バイト分読み込みます。
本関数は即時復帰関数です。
ロードの完了状態を取得するには criFsLoader_GetStatus関数を使用してください。
参照
criFsLoader_GetStatus

◆ criFsLoader_LoadWithoutDecompression()

CriError criFsLoader_LoadWithoutDecompression ( CriFsLoaderHn  loader,
CriFsBinderHn  binder,
const CriChar8 *  path,
CriSint64  offset,
CriSint64  load_size,
void *  buffer,
CriSint64  buffer_size 
)

圧縮データを展開せずにメモリ上にロード

引数
[in]loaderCriFsLoaderハンドル
[in]binderCriFsBinderハンドル
[in]pathファイルパス名
[in]offsetファイルの先頭からのオフセット位置
[in]load_sizeロードサイズ
[in]bufferバッファーへのポインター
[in]buffer_sizeバッファーのサイズ
戻り値
CriError エラーコード
説明:
指定されたバインダーとファイル名で、データの読み込みを開始します。
criFsLoader_Load 関数と異なり、データが圧縮されている場合でも、 データを展開せずにメモリ上にロードします。

本関数は即時復帰関数です。
ロードの完了状態を取得するには criFsLoader_GetStatus関数を使用してください。
参照
criFsLoader_GetStatus

◆ criFsLoader_LoadWithoutDecompressionById()

CriError criFsLoader_LoadWithoutDecompressionById ( CriFsLoaderHn  loader,
CriFsBinderHn  binder,
CriFsFileId  id,
CriSint64  offset,
CriSint64  load_size,
void *  buffer,
CriSint64  buffer_size 
)

圧縮データを展開せずにメモリ上にロード(CPKファイル内のファイルIDを指定)

引数
[in]loaderCriFsLoaderハンドル
[in]binderCriFsBinderハンドル
[in]idファイルID
[in]offsetファイルの先頭からのオフセット位置
[in]load_sizeロードサイズ
[in]bufferバッファーへのポインター
[in]buffer_sizeバッファーのサイズ
戻り値
CriError エラーコード
説明:
指定されたバインダーとファイルIDで、データの読み込みを開始します。
criFsLoader_Load 関数と異なり、データが圧縮されている場合でも、 データを展開せずにメモリ上にロードします。

本関数は即時復帰関数です。
ロードの完了状態を取得するには criFsLoader_GetStatus関数を使用してください。
参照
criFsLoader_GetStatus

◆ criFsLoader_DecompressData()

CriError criFsLoader_DecompressData ( CriFsLoaderHn  loader,
void *  src,
CriSint64  src_size,
void *  dst,
CriSint64  dst_size 
)

メモリ上に配置された圧縮データの展開

引数
[in]loaderCriFsLoaderハンドル
[in]src圧縮データアドレス
[in]src_size圧縮データサイズ
[in]dst展開先メモリアドレス
[in]dst_size展開先メモリ領域サイズ
戻り値
CriError エラーコード
説明:
メモリ上に配置された圧縮データを、別のメモリ領域に展開します。

本関数は即時復帰関数です。
ロードの完了状態を取得するには criFsLoader_GetStatus関数を使用してください。
備考:
入力データが圧縮されていない場合、 本関数は入力データを出力アドレスへそのままコピーします。
注意
本関数を使用するには、Ver.2.19.21以降のCRI File System Toolsを使用してデータを作成する必要があります。
(データを作成したツールが古い場合、データが展開されません。)

本関数は、CRI独自のソフトウェア圧縮コーデックにしか対応していません。
ハードウェアデコーダーを使用する場合や、プラットフォーム固有のコーデックを使用している場合、 本関数ではデータを展開できません。
参照
criFsLoader_GetStatus

◆ criFsLoader_Stop()

CriError criFsLoader_Stop ( CriFsLoaderHn  loader)

ロードの停止

引数
[in]loaderCriFsLoaderハンドル
戻り値
CriError エラーコード
説明:
ロードを停止します。
本関数は即時復帰関数です。停止状態を取得するには criFsLoader_GetStatus 関数を使用してください。
注意
本関数を実行しても、ローダーのステータスが CRIFSLOADER_STATUS_STOP に変わるまでは、バッファーへのデータ転送が続いている可能性があります。
ステータスが更新されるまでは、データロード先のバッファーを解放しないでください。
参照
criFsLoader_GetStatus

◆ criFsLoader_GetStatus()

CriError criFsLoader_GetStatus ( CriFsLoaderHn  loader,
CriFsLoaderStatus status 
)

ロードステータスの取得

引数
[in]loaderCriFsLoaderハンドル
[out]statusロードステータス
戻り値
CriError エラーコード
説明:
ロードステータスを取得します。
ファイルシステムローダーの状態遷移図

◆ criFsLoader_GetIoError()

CriError criFsLoader_GetIoError ( CriFsLoaderHn  loader,
CriFsIoError io_err 
)

I/Oエラーコードの取得

引数
[in]loaderCriFsLoaderハンドル
[out]io_errI/Oエラーコード
戻り値
CriError エラーコード
説明:
I/Oのエラーコードを取得します。
criFsLoader_GetStatus 関数がステータスがエラー状態になった場合、 本関数を実行することでI/Oインターフェイスから返されたエラーコードを 取得することが可能です。
参照
criFsLoader_GetStatus

◆ criFsLoader_GetLoadSize()

CriError criFsLoader_GetLoadSize ( CriFsLoaderHn  loader,
CriSint64 *  size 
)

ロードサイズの取得

引数
[in]loaderCriFsLoaderハンドル
[out]sizeロードサイズ
戻り値
CriError エラーコード
説明:
ロードされたサイズを取得します。

◆ criFsLoader_GetProgress()

CriError criFsLoader_GetProgress ( CriFsLoaderHn  loader,
CriSint64 *  progress,
CriSint64 *  request_size 
)

ロード進行状況の取得

引数
[in]loaderCriFsLoaderハンドル
[out]progressロード進行状況(読み込み済みサイズ)
[out]request_sizeロード要求サイズ
戻り値
CriError エラーコード
説明:
ロード進行状況を取得します。
本関数で取得できる値は、ロード進行状況の確認、ロード失敗時のリジューム処理などに利用できます。

◆ criFsLoader_GetPriority()

CriError criFsLoader_GetPriority ( CriFsLoaderHn  loader,
CriFsLoaderPriority prio 
)

プライオリティの取得

引数
[in]loaderCriFsLoaderハンドル
[out]prio読み込みプライオリティ
戻り値
CriError エラーコード
説明:
データロードのプライオリティを取得します。
参照
criFsLoader_SetPriority

◆ criFsLoader_SetPriority()

CriError criFsLoader_SetPriority ( CriFsLoaderHn  loader,
CriFsLoaderPriority  prio 
)

プライオリティの設定

引数
[in]loaderCriFsLoaderハンドル
[in]prio読み込みプライオリティ
戻り値
CriError エラーコード
説明:
データロードのプライオリティを設定します。
複数のローダーに対し、同時に criFsLoader_Load 関数でロードを実行した場合、 プライオリティの高いローダーが先に読み込みを行います。
また、既に低プライオリティのローダーが巨大なデータを読み込んでいる最中でも、 後から高プライオリティのローダーの読み込みを開始すれば、低プライオリティのローダーの処理に割り込んで、 高プライオリティのローダーの読み込みが先に実行されます。
備考:
複数のローダーが全て同一プライオリティであった場合、 データの読み込みは criFsLoader_Load 関数を実行した順に処理されます。
注意
ファイルの読み込みが行なわれていない状態でロードを開始した場合、 プライオリティに関係なく、そのロード処理が即座に開始されます。
そのため、ファイルの読み込みが行なわれていない状態で低プライオリティローダーの読み込みを行なった場合、 直後に高プライオリティのローダーで読み込みを開始したとしても、 低プライオリティローダーの読み込みがある程度行なわれることになります。
(単位読み込みサイズ分のデータを処理するまでは、他のローダーに処理がスイッチすることはありません。)
参照
criFsLoader_GetPriority, criFsLoader_Load, criFsLoader_SetReadUnitSize

◆ criFsLoader_SetReadUnitSize()

CriError criFsLoader_SetReadUnitSize ( CriFsLoaderHn  loader,
CriSint64  unit_size 
)

単位読み込みサイズの設定

引数
[in]loaderCriFsLoaderハンドル
[in]unit_size単位読み込みサイズ
戻り値
CriError エラーコード
説明:
単位読み込みサイズを設定します。 CriFsLoaderは、大きなサイズのリード要求を処理する際、それを複数の小さな単位のリード処理に分割して連続実行します。
この関数を使用することで単位リード処理サイズを変更することが可能です。
リード要求のキャンセルや、高プライオリティのリード処理の割り込み等は、単位リードサイズ境界でのみ処理されます。
そのため、ユニットサイズを小さく設定すると、I/O処理のレスポンスが向上します。逆に、ユニットサイズを大きく設定すると、ファイル単位の読み込み速度が向上します。

◆ criFsLoader_SetLoadLimiter()

CriError criFsLoader_SetLoadLimiter ( CriFsLoaderHn  loader,
CriFsLoadLimiterNo  limiter_no 
)

ロードリミッタ番号の設定

引数
[in]loaderCriFsLoaderハンドル
[in]limiter_noロードリミッタ番号
戻り値
CriError エラーコード
説明:
CriFsLoaderハンドルにロードリミッタ番号を割り当てます。
共通のリミッタ番号を割り当てた全てのローダー、グループローダー、バッチローダーの合計読み込みサイズが制限されます。
注意
ゲーム機向けではロードリミッタ機能は非サポートです。この関数は呼び出さないでください。
参照
CriFsLoadLimiterNo criFs_SetLoadLimiterSize criFs_SetLoadLimiterUnit criFsLoader_SetLoadLimiter criFsGroupLoader_SetLoadLimiter criFsBatchLoader_SetLoadLimiter

◆ criFsGroupLoader_Create()

CriError criFsGroupLoader_Create ( CriFsBindId  binder_id,
const CriChar8 *  groupname,
const CriChar8 *  attrname,
CriFsGroupLoaderHn *  grouploaderhn 
)

CRI File System - Group Loader オブジェクト

説明:
CriFsGroupLoaderとは、CPKファイル内でグループとして関連付けられた一連のファイルを、 一括して読み出すためのモジュールです。

グループローダーの作成

引数
[in]binder_idバインドID
[in]groupnameグループ名
[in]attrnameアトリビュート名
[out]grouploaderhnグループローダーハンドル
戻り値
CriError エラーコード
説明:
バインドIDからグループローダーを作成し、グループローダーハンドルを返します。
本関数は完了復帰関数です。<br>
グループ情報付きのCPKファイルをバインドしたバインドIDが必要です。
指定されたグループ名やアトリビュート名が存在しない場合、グループローダーを作成しません。
グループローダーが扱うグループ名とアトリビュート名は、グループローダー作成後に変更することは できません。
他のグループ+アトリビュートを扱う場合、別のグループローダーを作成します。<br>
アトリビュート名にNULLを指定した場合、指定グループに属する全てのファイルがグループロードの対象となります。
また、パッキングツールのアトリビュート指定を「none」とした場合も、アトリビュート名にNULLを指定します。
例:
CriFsBindId bndrid;
CriFsGroupLoaderHn gldrhn;
// グループ情報付きCPKファイル"group.cpk"のバインド
criFsBinder_BindCpk(bndrhn, NULL, "group.cpk", wk, wksz, &bndrid);
:
// グループ"GROUP1", アトリビュート"IMG"を扱うグループローダーを作成。
criFsGroupLoader_Create(bndrid, "GROUP1", "IMG", &gldrhn);
CriError criFsGroupLoader_Create(CriFsBindId binder_id, const CriChar8 *groupname, const CriChar8 *attrname, CriFsGroupLoaderHn *grouploaderhn)
CRI File System - Group Loader オブジェクト
// グループ"GROUP"の全てのファイルを扱うグループローダーを作成。
criFsGroupLoader_Create(bndrid, "GROUP", NULL, &gldrhn);
参照
criFsGroupLoader_Destroy()

◆ criFsGroupLoader_CreateFromBinderHn()

CriError criFsGroupLoader_CreateFromBinderHn ( CriFsBinderHn  bndrhn,
const CriChar8 *  groupname,
const CriChar8 *  attrname,
CriFsGroupLoaderHn *  grouploaderhn 
)

バインダーハンドル対応のグループローダーの作成

引数
[in]bndrhnバインダーハンドル(複数CPKファイルをバインドしているバインダー)
[in]groupnameグループ名(NULL指定は不可)
[in]attrnameアトリビュート名(NULL指定可能)
[out]grouploaderhnグループローダーハンドル
戻り値
CriError エラーコード
説明:
バインダーハンドルからグループローダーを作成し、グループローダーハンドルを返します。
この関数を利用すると、グループロード機能とマルチバインド機能を併用することができます。
フルビルドしたCPKファイルと、差分ビルドしたCPKファイルをマルチバインドすることで、一部のコンテンツファイルを更新した場合のCPKビルド時間やCPKファイル転送時間を節約することができます。
1回のグループロードは、どれか1つのCPKファイルが読み込み対象となります。この制約によって、グループロードの最大のメリットである一括処理の動作が維持されています。
よって、更新されたコンテンツファイルで差分CPKファイルを作成してマルチバインドする場合は、グループ単位で(変更のないコンテンツファイルも含めて)差分CPKファイルに含めておく必要があります。
差分CPKファイルの情報では、グループ内の全ファイルが削除されたこととグループに変更が無かったことが区別できません。削除やリネームで消えたはずのグループでも、フルビルドCPKからロード成功してしまいます。この動作が好ましくない場合、フルビルドCPKを作り直すことで解消できます。
本関数を利用する場合は、criFsBinder_SetPriority 関数で明示的に優先度設定を行うことを推奨します。フルビルドCPKと差分CPKをマルチバインドする場合、差分CPKのプライオリティを高く設定してください。

◆ criFsGroupLoader_Destroy()

CriError criFsGroupLoader_Destroy ( CriFsGroupLoaderHn  grouploaderhn)

グループローダーの破棄

引数
[in]grouploaderhnグループローダーハンドル
戻り値
CriError エラーコード
説明:
グループローダーを破棄します。
本関数は完了復帰関数です。
グループロード中に本関数を呼び出した場合はロードを中断し、ロードのためにグループローダー内部で確保していた CriFsLoaderHn を解放します。
グループロード中のグループローダーを破棄する場合、内部の CriFsLoaderHn が停止するのを待ちますので、 本関数から復帰するまでに時間がかかる場合があります。
これを回避するには、グループローダーのステータスが CRIFSLOADER_STATUS_LOADING でないことを確認してから、 本関数を呼出します。
参照
criFsGroupLoader_Create() criFsGroupLoader_GetStatus()

◆ criFsGroupLoader_SetLoadStartCallback()

CriError criFsGroupLoader_SetLoadStartCallback ( CriFsGroupLoaderHn  grouploaderhn,
CriFsGroupLoaderLoadStartCbFunc  func,
void *  obj 
)

ロード開始コールバック関数の設定

引数
[in]grouploaderhnグループローダーハンドル
[in]funcグループローダーコールバック関数
[in]objグループローダーコールバック関数引数
戻り値
CriError エラーコード
説明:
グループロード実施時にファイル毎に呼び出されるコールバック関数を設定します。
本関数で設定したコールバック関数は、ロードリクエストを行う前にファイル毎に呼出されます (つまり、ファイル数と同じ回数コールバック関数が呼出されます)。
グループロードコールバック関数を設定した場合、ファイル毎にコールバック関数を呼出すため、 複数ファイルの一括ロードは行えません。
グループロードコールバック関数にNULLを設定した場合、コールバック関数の設定は解除されます。

●コールバック関数について
コールバック関数は引数として、obj:ユーザーが指定したオブジェクトと、gfinfo:ロードするファイルの 情報構造体が渡されます。
コールバック関数の返値は、そのファイルを読み込むバッファーへのポインターとなります。
ファイルの読込を行いたくない場合は、 NULL を返値としてください。
注意
コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

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

◆ criFsGroupLoader_GetNumberOfGroupFiles()

CriError criFsGroupLoader_GetNumberOfGroupFiles ( CriFsGroupLoaderHn  grouploaderhn,
CriSint32 *  nfiles 
)

グループファイル数の取得

引数
[in]grouploaderhnグループローダーハンドル
[out]nfilesグループファイル数
戻り値
CriError エラーコード
説明:
指定のグループに属するファイル数を取得します。
criFsGroupLoader_LoadBulk 関数の引数 gfinf の配列の要素数は、本関数で取得される グループファイル数となります。
参照
criFsGroupLoader_GetTotalGroupDataSize(), criFsGroupLoader_LoadBulk()

◆ criFsGroupLoader_GetTotalGroupDataSize()

CriError criFsGroupLoader_GetTotalGroupDataSize ( CriFsGroupLoaderHn  grouploaderhn,
CriSint64 *  datasize 
)

グループデータサイズの取得

引数
[in]grouploaderhnグループローダーハンドル
[out]datasizeデータサイズ
戻り値
CriError エラーコード
説明:
グループロードに必要な読込領域のサイズを取得します。
アライメントなども加味されたデータサイズとなります。
参照
criFsGroupLoader_GetNumberOfGroupFiles(), criFsGroupLoader_LoadBulk()

◆ criFsGroupLoader_GetGroupFileInfos()

CriError criFsGroupLoader_GetGroupFileInfos ( CriFsGroupLoaderHn  grouploaderhn,
CriFsGroupFileInfo  gfinf[],
CriSint32  numgfinf 
)

グループファイル情報の取得

引数
[in]grouploaderhnグループローダーハンドル
[out]gfinf[]CriFsGroupFileInfo構造体の配列
[in]numgfinf配列(gfinf[])の要素数
戻り値
CriError エラーコード
説明:
グループ化された複数ファイルデータ情報を取得します。
ファイル数分の CriFsGroupFileInfo 構造体の配列を指定する必要があります。
パッキングツールのアトリビュート指定を「none」としたグループに対しては、本関数に指定するグループ ローダー作成時のアトリビュート名指定をNULLとして下さい。
取得されるグループファイル情報( ::CriFsGroupFileInfo )の内、datapointerで指される読込先はNULLとなります。
例:
CriSint32 nfiles;
// グループファイル情報構造体配列領域の確保
gfinf = malloc( sizeof(CriFsGroupFileInfo) * nfiles );
// グループファイル読み込み領域の確保
databuff = malloc(datasize);
// グループロード情報の取得
criFsGroupLoader_GetGroupFileInfos(gldrhn, gfinf, nfiles);
CriError criFsGroupLoader_GetNumberOfGroupFiles(CriFsGroupLoaderHn grouploaderhn, CriSint32 *nfiles)
グループファイル数の取得
CriError criFsGroupLoader_GetTotalGroupDataSize(CriFsGroupLoaderHn grouploaderhn, CriSint64 *datasize)
グループデータサイズの取得
CriError criFsGroupLoader_GetGroupFileInfos(CriFsGroupLoaderHn grouploaderhn, CriFsGroupFileInfo gfinf[], CriSint32 numgfinf)
グループファイル情報の取得
グループファイル情報構造体
Definition: cri_file_system.h:1274

◆ criFsGroupLoader_LoadBulk()

CriError criFsGroupLoader_LoadBulk ( CriFsGroupLoaderHn  gourploaderhn,
void *  buffer,
CriSint64  buffer_size,
CriFsGroupFileInfo  gfinf[],
CriSint32  numgfinf 
)

グループロードの開始

引数
[in]gourploaderhnグループローダーハンドル
[out]bufferロード先バッファーへのポインター
[in]buffer_sizeロード先バッファーのサイズ
[out]gfinf[]CriFsGroupInfo構造体の配列
[in]numgfinf配列(gfinf[])の要素数
戻り値
CriError エラーコード
説明:
グループ化された複数ファイルデータの読み込みを開始します。
ファイル数分の CriFsGroupFileInfo 構造体の配列を指定する必要があります。
指定のグループファイルを読み込めるサイズのロード領域が必要です。
本関数は即時復帰関数です。
ロードの完了状態を取得するには criFsGroupLoader_GetStatus 関数を使用してください。<br>
パッキングツールのアトリビュート指定を「none」としたグループを読み込む場合、本関数に指定するグループ ローダーは、グループローダー作成時にアトリビュート名指定をNULLとします。<br>
グループロードコールバック関数を設定した場合、コールバック関数の返値をロードアドレスとしますので、 本関数の引数 buffer, buffer_size は参照されません。
なお指定した gfinf はロード後も criFsGroupLoader_GetGroupFileInfoIndex 関数等の情報取得関数にてライブラリから参照を行います。
そのため基本的にはハンドル破棄まで領域は保持しておく必要があります。<br>
グループローダー内部で複数の CriFsLoaderHn を利用してロードを行います。 CriFsLoaderHn を1つも作成 できない場合、エラーコールバックが呼ばれます。グループローダーで作成した CriFsLoaderHn は、 グループロード完了時に破棄されます。
例:
CriSint32 nfiles;
CriSint64 datasize;
void *databuff;
// グループファイル情報構造体配列領域の確保
gfinf = malloc( sizeof(CriFsGroupFileInfo) * nfiles );
// グループファイル読み込み領域の確保
databuff = malloc(datasize);
// グループロード
criFsGroupLoader_LoadBulk(gldrhn, databuff, datasize, gfinf, nfiles);
// グループロード完了待ち
for (;;) {
criFsGroupLoader_GetStatus(gldrhn, &status);
if (status == CRIFSLOADER_STATUS_COMPLETE) break;
}
CriError criFsGroupLoader_GetStatus(CriFsGroupLoaderHn grouploaderhn, CriFsLoaderStatus *status)
ロードステータスの取得
CriFsLoaderStatus
ロードステータス
Definition: cri_file_system.h:1219
CriError criFsGroupLoader_LoadBulk(CriFsGroupLoaderHn gourploaderhn, void *buffer, CriSint64 buffer_size, CriFsGroupFileInfo gfinf[], CriSint32 numgfinf)
グループロードの開始
参照
criFsGroupLoader_GetStatus() criFsGroupLoader_SetLoadStartCallback() criFsGroupLoader_Stop() criFsGroupLoader_Create()

◆ criFsGroupLoader_Stop()

CriError criFsGroupLoader_Stop ( CriFsGroupLoaderHn  grouploaderhn)

グループロードの停止(中断)

引数
[in]grouploaderhnグループローダーハンドル
戻り値
CriError エラーコード
説明:
グループローダーでのファイルロードを中断します。
グループロードを中断するまでにロードされたファイル数やファイルの内容はそのまま保持されます。

本関数は即時復帰関数です。
グループロードの際、グループローダー内部で CriFsLoaderHn を作成してファイルロードを行います。 本関数を呼出した場合、グループロードに使用している CriFsLoaderHn に中断(Stop)の指示を出して 復帰します。
そのため、本関数復帰時点では、まだファイルロード中である可能性があります。
グループローダーは、内部で使用している CriFsLoaderHn のロード停止確認後に、その CriFsLoaderHn を 解放し、グループローダーのステータスを CRIFSLOADER_STATUS_STOP にします。
この一連の処理は criFsGroupLoader_GetStatus 関数呼び出し時に行われますので、本関数呼び出し後は、 グループローダーのステータスが CRIFSLOADER_STATUS_LOADING でないことを確認してください。
そうしない場合、グループローダー内部で使用している CriFsLoaderHn が解放されませんので、 他のグループローダーが CriFsLoaderHn を確保できなくなる可能性があります。
参照
criFsGroupLoader_GetStatus() criFsGroupLoader_LoadBulk()

◆ criFsGroupLoader_GetStatus()

CriError criFsGroupLoader_GetStatus ( CriFsGroupLoaderHn  grouploaderhn,
CriFsLoaderStatus status 
)

ロードステータスの取得

引数
[in]grouploaderhnグループローダーハンドル
[out]statusCriFsGroupLoaderStatusロードステータス
戻り値
CriError エラーコード
説明:
グループローダーのロードステータスを返します。
グループロード対象の全てのファイルのロードを完了した場合、 CRIFSLOADER_STATUS_COMPLETE を返します。
参照
criFsGroupLoader_LoadBulk()

◆ criFsGroupLoader_GetLoadedFiles()

CriError criFsGroupLoader_GetLoadedFiles ( CriFsGroupLoaderHn  grouploaderhn,
CriSint32 *  nfiles 
)

ロードされたファイル数の取得

引数
[in]grouploaderhnグループローダーハンドル
[out]nfilesロードされたファイル数
戻り値
CriError エラーコード
説明:
criFsGroupLoader_LoadBulk 関数で既に読み込まれたファイルの数を返します。
参照
criFsGroupLoader_LoadBulk()

◆ criFsGroupLoader_IsLoaded()

CriError criFsGroupLoader_IsLoaded ( const CriFsGroupFileInfo gfinfo,
CriBool *  result 
)

ファイルの読込状態の取得

引数
[in]gfinfo読込状態を取得するファイルの CriFsGroupFileInfo 構造体へのポインター
[out]resultファイルの読込状態(CRI_TRUE:読込済 CRI_FALSE:未読込)
戻り値
CriError エラーコード
説明:
指定されたファイルが読み込まれたかどうかを取得します。
読込状態を取得するファイルの CriFsGroupFileInfo 構造体へのポインターは criFsGroupLoader_GetGroupFileInfoIndex 関数や criFsGroupLoader_GetGroupFileInfo 関数で取得します。
参照
criFsGroupLoader_GetGroupFileInfoIndex(), criFsGroupLoader_GetGroupFileInfo()

◆ criFsGroupLoader_GetGroupFileInfoIndex()

CriError criFsGroupLoader_GetGroupFileInfoIndex ( CriFsGroupLoaderHn  grouploaderhn,
const CriChar8 *  fpath,
CriSint32 *  index 
)

CriFsGroupFileInfo構造体の配列インデクスの取得

引数
[in]grouploaderhnグループローダーハンドル
[in]fpathファイル名フルパス
[out]index配列インデクス
戻り値
CriError エラーコード
説明:
指定されたファイルの CriFsGroupFileInfo 構造体の配列インデクスを取得します。
ファイル名はフルパス名で指定します。指定されたファイルの検索にはバイナリサーチを使用します。
指定されたファイルが見つからない場合は、返値が-1となります。
グループロードされた個々のファイルが実際にロードされたアドレスは、 CriFsGroupFileInfo 構造体に記述されます。
ロードされたデータへアクセスするには、::CriFsGroupFileInfo 構造体を取得する必要があります。
CriFsGroupFileInfo 構造体を取得する方法には、ロードしたファイルのファイル名もしくは コンテンツファイルIDを指定し、該当する構造体要素を取得する方法と、本関数で取得したインデクスにより 構造体配列を直接アクセスする方法の2通りがあります。
参照
criFsGroupLoader_GetNumberOfGroupFiles(), criFsGroupLoader_GetGroupFileInfo()

◆ criFsGroupLoader_GetGroupFileInfoIndexById()

CriError criFsGroupLoader_GetGroupFileInfoIndexById ( CriFsGroupLoaderHn  grouploaderhn,
CriFsFileId  id,
CriSint32 *  index 
)

CriFsGroupFileInfo構造体の配列インデクスの取得(ID指定)

引数
[in]grouploaderhnグループローダーハンドル
[in]idコンテンツファイルID
[out]index配列インデクス
戻り値
CriError エラーコード
説明:
指定されたファイルの CriFsGroupFileInfo 構造体の配列インデクスを取得します。
ファイルはコンテンツファイルIDで指定します。指定されたファイルの検索にはリニアサーチを使用しています。
指定されたファイルが見つからない場合は、返値が-1となります。
グループロードされた個々のファイルが実際にロードされたアドレスは、 CriFsGroupFileInfo 構造体に記述されます。
検索方法の都合上、既にグループロード済で CriFsGroupFileInfo 情報を取得している場合は、 CriFsGroupFileInfo 情報のIDを直接検索する方が、本関数でインデクスを取得するよりも検索効率が高いです。
ロードされたデータへアクセスするには、::CriFsGroupFileInfo 構造体を取得する必要があります。
CriFsGroupFileInfo 構造体を取得する方法には、ロードしたファイルのファイル名もしくは コンテンツファイルIDを指定し、該当する構造体要素を取得する方法と、本関数で取得したインデクスにより 構造体配列を直接アクセスする方法の2通りがあります。
参照
criFsGroupLoader_GetNumberOfGroupFiles(), criFsGroupLoader_GetGroupFileInfoById()

◆ criFsGroupLoader_GetGroupFileInfo()

CriError criFsGroupLoader_GetGroupFileInfo ( CriFsGroupLoaderHn  grouploaderhn,
const CriChar8 *  fpath,
const CriFsGroupFileInfo **  gfinfo 
)

CriFsGroupFileInfo構造体の取得

引数
[in]grouploaderhnグループローダーハンドル
[in]fpathファイル名フルパス
[out]gfinfoCriFsGroupFileInfo構造体へのポインターへのポインター
戻り値
CriError エラーコード
説明:
指定されたファイルの CriFsGroupFileInfo 構造体へのポインターを取得します。
ファイル名はフルパス名で指定します。
指定されたファイルが見つからない場合は、出力値が NULL となります。
参照
criFsGroupLoader_GetNumberOfGroupFiles(), criFsGroupLoader_GetGroupFileInfoIndex()

◆ criFsGroupLoader_GetGroupFileInfoById()

CriError criFsGroupLoader_GetGroupFileInfoById ( CriFsGroupLoaderHn  grouploaderhn,
CriFsFileId  id,
const CriFsGroupFileInfo **  gfinfo 
)

CriFsGroupFileInfo構造体の取得(ID指定)

引数
[in]grouploaderhnグループローダーハンドル
[in]idコンテンツファイルID
[out]gfinfoCriFsGroupFileInfo構造体へのポインターへのポインター
戻り値
CriError エラーコード
説明:
指定されたファイルの CriFsGroupFileInfo 構造体へのポインターを取得します。
ファイルはコンテンツファイルIDで指定します。
指定されたファイルが見つからない場合は、出力値が NULL となります。
参照
criFsGroupLoader_GetNumberOfGroupFiles(), criFsGroupLoader_GetGroupFileInfoIndexById()

◆ criFsGroupLoader_GetGroupName()

CriError criFsGroupLoader_GetGroupName ( CriFsGroupLoaderHn  grouploaderhn,
const CriChar8 **  groupname 
)

グループ名の取得

引数
[in]grouploaderhnグループローダーハンドル
[out]groupnameグループ名
戻り値
CriError エラーコード
説明:
グループローダーで扱うグループのグループ名を取得します。

◆ criFsGroupLoader_GetAttributeName()

CriError criFsGroupLoader_GetAttributeName ( CriFsGroupLoaderHn  grouploaderhn,
const CriChar8 **  attrname 
)

グループ属性の取得

引数
[in]grouploaderhnグループローダーハンドル
[out]attrnameグループ属性
戻り値
CriError エラーコード
説明:
グループローダーで扱うグループのグループ属性を取得します。

◆ criFsGroupLoader_GetLoaderPriority()

CriError criFsGroupLoader_GetLoaderPriority ( CriFsGroupLoaderHn  grouploaderhn,
CriFsLoaderPriority prio 
)

プライオリティの取得

引数
[in]grouploaderhnCriFsGroupLoaderハンドル
[out]prio読み込みプライオリティ
戻り値
CriError エラーコード
説明:
グループローダー内で使用するローダー( ::CriFsLoaderHn )のプライオリティを取得します(初期値は CRIFSLOADER_PRIORITY_NORMAL です)。 ローダーのプライオリティに関しては、::criFsLoader_GetPriority や criFsLoader_SetPriority の説明も参照ください。
参照
criFsGroupLoader_GetLoaderPriority, criFsLoader_GetPriority, criFsLoader_SetPriority

◆ criFsGroupLoader_SetLoaderPriority()

CriError criFsGroupLoader_SetLoaderPriority ( CriFsGroupLoaderHn  grouploaderhn,
CriFsLoaderPriority  prio 
)

プライオリティの設定

引数
[in]grouploaderhnCriFsGroupLoaderハンドル
[in]prio読み込みプライオリティ
戻り値
CriError エラーコード
説明:
グループローダー内で使用するローダー( ::CriFsLoaderHn )のプライオリティを設定します(初期値は CRIFSLOADER_PRIORITY_NORMAL です)。 ローダーのプライオリティに関しては、::criFsLoader_GetPriority や criFsLoader_SetPriority の説明も参照ください。
参照
criFsGroupLoader_SetLoaderPriority, criFsLoader_SetPriority

◆ criFsGroupLoader_SetReadUnitSize()

CriError criFsGroupLoader_SetReadUnitSize ( CriFsGroupLoaderHn  grouploaderhn,
CriSint64  unit_size 
)

単位読み込みサイズの設定

引数
[in]grouploaderhnCriFsGroupLoaderハンドル
[in]unit_size単位読み込みサイズ
戻り値
CriError エラーコード
説明:
グループローダー内で使用するローダーの単位読み込みサイズを設定します。 CriFsLoaderは、大きなサイズのリード要求を処理する際、それを複数の小さな単位のリード処理に分割して連続実行します。
この関数を使用することで単位リード処理サイズを変更することが可能です。
リード要求のキャンセルや、高プライオリティのリード処理の割り込み等は、単位リードサイズ境界でのみ処理されます。
そのため、ユニットサイズを小さく設定すると、I/O処理のレスポンスが向上します。逆に、ユニットサイズを大きく設定すると、ファイル単位の読み込み速度が向上します。

◆ criFsGroupLoader_SetLoadLimiter()

CriError criFsGroupLoader_SetLoadLimiter ( CriFsGroupLoaderHn  grouploaderhn,
CriFsLoadLimiterNo  limiter_no 
)

ロードリミッタ番号の設定

引数
[in]grouploaderhnCriFsGroupLoaderハンドル
[in]limiter_noロードリミッタ番号
戻り値
CriError エラーコード
説明:
CriFsGroupLoaderハンドルにロードリミッタ番号を割り当てます。
共通のリミッタ番号を割り当てた全てのローダー、グループローダー、バッチローダーの合計読み込みサイズが制限されます。
注意
ゲーム機向けではロードリミッタ機能は非サポートです。この関数は呼び出さないでください。
参照
CriFsLoadLimiterNo criFs_SetLoadLimiterSize criFs_SetLoadLimiterUnit criFsLoader_SetLoadLimiter criFsGroupLoader_SetLoadLimiter criFsBatchLoader_SetLoadLimiter

◆ criFsGroupLoader_LimitNumPreparingFiles()

CriError criFsGroupLoader_LimitNumPreparingFiles ( CriFsGroupLoaderHn  grouploaderhn,
CriSint32  nfile_per_server 
)

サーバー処理当たりの準備ファイル数の制限

引数
[in]grouploaderhnグループローダーハンドル
[in]nfile_per_server1サーバー当たりの準備処理ファイル数、または、特別値 CRIFS_GROUPLOADER_NO_PREPARATION_LIMIT
戻り値
CriError エラーコード
説明:
グループローダーの準備処理の処理方法を設定します。
この関数を呼び出さない場合、または、CRIFS_GROUPLOADER_NO_PREPARATION_LIMIT を指定した場合は、 criFsGroupLoader_LoadBulk 内部で準備処理を完結させます。この処理方法では、グループ内ファイル数が多い 場合に criFsGroupLoader_LoadBulk 関数の処理時間が長くなり、コマ落ちが発生する場合があります。
この問題を回避する手段として、グループローダーの準備処理をサーバー処理に分散させる機能を追加しました。
特別値以外の数値を指定した場合、準備処理は criFsGroupLoader_LoadBulk 関数からサーバー処理に移管され、 1回のサーバー処理で準備処理を行うファイルの数は指定した数に制限されます。
グループローダーのサーバー処理は、criFsGroupLoader_GetStatus 関数内で実行されます。

具体的なコードの例は以下のとおりです。
例:
{
// ハンドルaの準備処理はLoadBulk関数内で行う。
// ハンドルbとcの準備処理はサーバー処理で500ファイルづつ行う。ハンドル毎に個別に処理量を制限する。
}
#define CRIFS_GROUPLOADER_NO_PREPARATION_LIMIT
準備ファイル数の制限を設定するAPIで「無制限」を示す特別値
Definition: cri_file_system.h:1255
CriError criFsGroupLoader_LimitNumPreparingFiles(CriFsGroupLoaderHn grouploaderhn, CriSint32 nfile_per_server)
サーバー処理当たりの準備ファイル数の制限

◆ criFsGroupLoader_GetGroupFileInfoStartOffset()

CriError criFsGroupLoader_GetGroupFileInfoStartOffset ( CriFsGroupLoaderHn  group_all,
CriFsGroupLoaderHn  group_attr,
CriSint32 *  offset 
)

特定アトリビュートのCriFsGroupFileInfo構造体配列の開始オフセットの取得

引数
[in]group_allグループローダーハンドル(グループ全体)
[in]group_attrグループローダーハンドル(特定アトリビュート)
[out]offsetグループ全体のCriFsGroupFileInfo構造体の配列に対する、特定アトリビュートが開始するオフセット
戻り値
CriError エラーコード
説明:
下記の条件でグループローダーを利用する場合に、この関数を利用すると検索処理効率を改善することができます。
適用条件:
 ・グループ内に複数のアトリビュートのファイルを含める。
 ・グループ内の複数のアトリビュートのファイルを同時にロードする。
 ・アトリビュート毎に転送先を切り分ける。
 ・アトリビュートを特定する情報は持たずに、ファイル名またはファイルIDからグループファイル情報を検索する。
 ・グループの階層構造(サブグループ)は利用していない。
 ・CPKファイル内に本APIが利用する追加情報が記録されている。(本APIのサポートは環境依存です)

この関数を利用しない場合は、個々のファイルがどのアトリビュートに属するか分からないので、全てのグループハンドルを逐次検索しなければなりません。
この関数を利用する場合は、1回の検索で目的のファイルを見つけることができます。
グループロードを実行するハンドルは、グループ名とアトリビュート名を指定して、グループローダーハンドルを作成してください。
さらに1つ、検索だけを目的とした、グループ全体のグループローダーハンドルを作成します。この時はグループ名だけを指定し、アトリビュート名にはCRI_NULLを指定してください。
CriFsGroupFileInfo構造体配列については、グループ全体の配列を連続メモリとして確保してください。
このグループ全体の配列を切り分けて、個々の criFsGroupLoader_LoadBulk 関数の引数に指定します。
個々のグループローダーの動作と、グループ全体に対する検索処理が整合するためには、グループ全体の配列を適切に切り分ける必要があります。
本関数が出力する「特定アトリビュートの開始オフセット」を利用して、全体の配列を切り分けてください。
具体的なコードの例を以下に示します。
例:
{
criFsGroupLoader_Create(bindid, "GROUP1", CRI_NULL, &group_all);
criFsGroupLoader_Create(bindid, "GROUP1", "RAM1", &group_ram1);
criFsGroupLoader_Create(bindid, "GROUP1", "RAM2", &group_ram2);
criFsGroupLoader_GetNumberOfGroupFiles(group_all, &nfiles_all);
criFsGroupLoader_GetNumberOfGroupFiles(group_ram1, &nfiles_ram1);
criFsGroupLoader_GetNumberOfGroupFiles(group_ram2, &nfiles_ram2);
criFsGroupLoader_GetGroupFileInfoStartOffset(group_all, group_ram1, &offset_ram1);
criFsGroupLoader_GetGroupFileInfoStartOffset(group_all, group_ram2, &offset_ram2);
gfinf_all = malloc(sizeof(CriFsGroupFileInfo) * nfiles_all);
//memset(gfinf_all, 0, sizeof(CriFsGroupFileInfo) * nfiles_all);※ゼロクリアが必要なケースについて下記参照
criFsGroupLoader_LoadBulk(group_ram1, buffer_ram1, buffer_size_ram1, &gfinf_all[offset_ram1], nfiles_ram1);
criFsGroupLoader_LoadBulk(group_ram2, buffer_ram2, buffer_size_ram2, &gfinf_all[offset_ram2], nfiles_ram2);
for (;;) {
criFsGroupLoader_GetStatus(group_ram1, &status_ram1);
criFsGroupLoader_GetStatus(group_ram2, &status_ram2);
if (status_ram1 == CRIFSLOADER_STATUS_COMPLETE &&
status_ram2 == CRIFSLOADER_STATUS_COMPLETE) {
break;
}
}
criFsGroupLoader_GetGroupFileInfoIndex(group_all, "sample.bmp", &index);
userDrawBitmap(gfinf_all[index].datapointer);
}
CriError criFsGroupLoader_GetGroupFileInfoStartOffset(CriFsGroupLoaderHn group_all, CriFsGroupLoaderHn group_attr, CriSint32 *offset)
特定アトリビュートのCriFsGroupFileInfo構造体配列の開始オフセットの取得
CriError criFsGroupLoader_GetGroupFileInfoIndex(CriFsGroupLoaderHn grouploaderhn, const CriChar8 *fpath, CriSint32 *index)
CriFsGroupFileInfo構造体の配列インデクスの取得
注意
※:グループに含まれる全てのアトリビュートをロード処理対象としない場合には注意が必要です。 ロードしなかったファイルでも検索が成功しますが、取得したインデックスで参照できる CriFsGroupFileInfo構造体の内容は不定値となっています。 ロードしなかったファイルを検索する可能性があるなら、あらかじめ配列をゼロクリアしておき、 構造体の内容が無効であることを識別できるようにしてください。
本APIのサポートは環境依存です。未サポートの環境で呼び出した場合はエラーとなります。

◆ criFsGroupLoader_SetUseLoadedFlag()

void criFsGroupLoader_SetUseLoadedFlag ( CriBool  use_flag)

単一ファイルのロード確認の設定

引数
[in]use_flagCRI_TRUE または CRI_FALSE
説明:
criFsGroupLoader_IsLoaded関数を使用するかを設定します。
CRI_TRUEを指定すると使用し、CRI_FALSEを指定すると使用しません
criFsGroupLoader_IsLoaded関数を使用しない場合、ロード完了時の処理が早くなりまが、 単一ファイルのロード確認が行えません。 criFsGroupLoader_LoadBulk 関数を実行する前に本関数を呼んでください。
参照
criFsGroupLoader_IsLoaded criFsGroupLoader_LoadBulk

◆ criFs_AttachLogOutput()

CriError criFs_AttachLogOutput ( CriFsLogOutputMode  mode,
void *  param 
)

ログ出力機能の追加

引数
[in]modeログ出力モード
[in]param拡張パラメータ
戻り値
CriError エラーコード
説明:
ログ出力機能を有効にし、ファイルアクセスログの出力を開始します。
本関数を実行すると、ファイルにアクセスするタイミングで、デバッガー等にファイルアクセスログが出力されるようになります。
注意
本関数を実行後、必ず対になる criFs_DetachLogOutput 関数を実行してください。
また、 criFs_DetachLogOutput 関数を実行するまでは、本関数を再度実行することはできません。
参照
criFs_DetachLogOutput

◆ criFs_DetachLogOutput()

CriError criFs_DetachLogOutput ( void  )

ログ出力機能の削除

戻り値
CriError エラーコード
説明:
ログ出力機能を無効にし、ファイルアクセスログの出力を停止します。
本関数を実行することで、デバッガー等へのファイルアクセスログの出力を停止することが可能です。
注意
criFs_DetachLogOutput 関数実行前に本関数を実行することはできません。
参照
criFs_AttachLogOutput

◆ criFs_SetUserLogOutputFunction()

CriError criFs_SetUserLogOutputFunction ( CriFsLogOutputFunc  func,
void *  obj 
)

ユーザー定義ログ出力関数の登録

引数
[in]funcログ出力関数
[in]objログ出力関数に渡すオブジェクト
戻り値
CriError エラーコード
説明:
ログの出力関数をユーザー指定の関数に置き換えます。
本関数を使用することで、ファイルアクセスログの出力方法をユーザーが自由に カスタマイズすることが可能です。
備考:
本関数を使用していない場合や、ログ出力関数(func)にNULLを指定した場合、 CRI File Systemライブラリのデフォルトログ出力関数が使用されます。

◆ 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 以外の値)になります。