CRIWARE for C#
Search Results for

    Show / Hide Table of Contents

    Class CriFsBinder

    CriFsBinderハンドル

    Inheritance
    object
    CriFsBinder
    Implements
    IDisposable
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: CriWare
    Assembly: CriWare.CriFs.dll
    Syntax
    public class CriFsBinder : IDisposable
    Remarks

    説明: バインダーとは、ファイルを効率良く扱うためのデータベースです。

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

    Constructors

    CriFsBinder()

    バインダーの生成

    Declaration
    • C#
    • C
    public CriFsBinder()
    CriError CRIAPI criFsBinder_Create(CriFsBinderHn *bndrhn)
    Remarks

    説明: バインダーを生成し、バインダーオブジェクトを返します。

    Fields

    BidNull

    無効なバインドID

    Declaration
    public const int BidNull = 0
    Field Value
    Type Description
    int
    Remarks

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

    See Also
    CriFsBind
    BindCpk(CriFsBinder, ArgString, out CriFsBind)
    BindFile(CriFsBinder, ArgString, out CriFsBind)
    BindFiles(CriFsBinder, ArgString, out CriFsBind)
    BindDirectory(CriFsBinder, ArgString, out CriFsBind)

    Properties

    NativeHandle

    ネイティブハンドル

    Declaration
    public NativeHandleIntPtr NativeHandle { get; }
    Property Value
    Type Description
    NativeHandleIntPtr

    Methods

    AddResourceForBinding(int)

    Pro

    バインドリソースの追加

    Declaration
    • C#
    • C
    public CriErr.Error AddResourceForBinding(int maxBinds)
    CriError criFsBinder_AddResourceForBinding(CriFsBinderHn binder, CriSint32 max_binds, void *work, CriSint32 work_size)
    Parameters
    Type Name Description
    int maxBinds

    最大同時バインド回数

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインダーにバインド処理用のリソースを追加します。 CreateWithWork() 関数で作成したバインダーは、デフォルト状態では同時に1回しかバインド処理が行えません。 同時に2回以上のバインド処理を行うには、本関数で追加のリソースを指定する必要があります。 ワーク領域のサイズは GetResourceSizeForBinding(int, out int) 関数で取得可能です。 バインダー作成前に GetResourceSizeForBinding(int, out int) 関数で取得したサイズ分のメモリを確保し、本関数に指定してください。

    補足: 本関数を実行すると、第二引数(max_binds)で指定した回数分だけ追加でバインド処理が可能となります。 例えば、max_bindsに2を指定した場合、デフォルト状態でバインド可能な1回に加え、さらに2回(計3回)のバインド処理が可能となります。

    注意: 本関数は CreateWithWork() 関数で作成したバインダーに対してのみ使用可能です。 CriFsBinder() 関数で作成したバインダーのバインド回数上限を変更する場合、 ライブラリ初期化時に指定する CriFs.Config::max_binds の値を変更する必要があります。 バインダーを破棄する( Dispose() 関数を実行する)までは、ワーク領域に対する読み書きが発生します。 ワーク領域として指定したメモリは、バインダーを破棄するまでは解放しないでください。

    See Also
    CreateWithWork()
    AddResourceForBinding(int)
    Dispose()

    AnalyzeWorkSizeForBindCpk(ArgString, out int)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error AnalyzeWorkSizeForBindCpk(ArgString path, out int rqsize)
    CriError CRIAPI criFsBinder_AnalyzeWorkSizeForBindCpk(CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 wksize, CriSint32 *rqsize)
    Parameters
    Type Name Description
    ArgString path

    CPKファイルのパス

    int rqsize

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

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: srcbndrhn と path で指定されたCPKファイルを解析し、CPKバインドに必要なワーク領域の サイズを取得します。 本関数は完了復帰関数です。 本関数は、指定されたCPKファイルのヘッダー情報を読み込んで解析しています。そのため、 内部で読込待ちを行っています。 本関数に渡すワーク領域は、GetWorkSizeForBindCpk(ArgString, out int)関数で得られたサイズの ワーク領域を確保して渡してください。

    BindCpk(CriFsBinder, ArgString, out CriFsBind)

    Pro

    Cpkファイルのバインド

    Declaration
    • C#
    • C
    public CriErr.Error BindCpk(CriFsBinder srcbndrhn, ArgString path, out CriFsBind bndrid)
    CriError CRIAPI criFsBinder_BindCpk(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
    Parameters
    Type Name Description
    CriFsBinder srcbndrhn

    バインドするCPKファイルにアクセスするためのバインダーハンドル

    ArgString path

    バインドする CPKファイルのパス名

    CriFsBind bndrid

    バインドID

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: CPKファイルを利用するには、CPKファイルをバインドする必要があります。 本関数は、バインダー(bndrhn)にCPKファイル(path)をバインドし、バインドID(bndrid)を返します。 srcbndrhnには、CPKファイルを検索するためのバインダーを指定します。 これがnullの場合、デフォルトデバイスを使用します。 ワーク領域(work)のサイズは、GetWorkSizeForBindCpk(ArgString, out int)で取得できます。 ワーク領域は、バインドIDが破棄されるまで保持してください。 メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にnull(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。 バインドを開始できない場合、バインドIDは BidNull が返されます。 バインドIDに BidNull 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。 バインドしたCPKファイルはオープン状態で保持されます。 そのため、バインダー内部でCriFsLoaderを作成しています。 本関数は即時復帰関数です。本関数から復帰した直後は、CPKのバインドはまだ完了しておらず、 CPKのコンテンツファイルへのアクセスは行えません。 バインド状態が完了( Complete )となった後に、CPKは利用可能となります。 バインド状態は GetStatus(CriFsBind, out Status) 関数で取得します。

    BindDirectory(CriFsBinder, ArgString, out CriFsBind)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error BindDirectory(CriFsBinder srcbndrhn, ArgString path, out CriFsBind bndrid)
    CriError CRIAPI criFsBinder_BindDirectory(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
    Parameters
    Type Name Description
    CriFsBinder srcbndrhn

    バインドしたディレクトリ名でファイルにアクセスする際のバインダー

    ArgString path

    バインドするディレクトリパス名

    CriFsBind bndrid

    バインドID

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ディレクトリパス名をバインドします。 バインドするディレクトリ名は絶対パスで指定してください。 バインド時に指定されたディレクトリが存在するか否かはチェックしていません。 バインドされるのはディレクトリパスだけで、指定されたディレクトリ内のファイルを オープン状態にするものではありません。よってバインドに失敗しない限り、本関数から復帰時には バインドIDのバインド状態は完了( Complete )となります。 srcbndrhnには、本関数でバインドしたディレクトリを用いてファイルを検索する際に、 検索対象となるバインダーを指定します。 ワーク領域(work)のサイズは、GetWorkSizeForBindDirectory(ArgString, out int)で取得できます。 ワーク領域は、バインドIDが破棄されるまで保持して下さい。 メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にnull(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。 バインドを開始できない場合、バインドIDは BidNull が返されます。 バインドIDに BidNull 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。

    備考: 最大同時にバインド可能なディレクトリ数には制限があります。 具体的には、CriFs.Config の num_binders や max_binds の値が充分であっても、 現状は最大16個(PCのみ64個)までしかディレクトリをバインドすることができません。

    注意: 本関数は開発支援用のデバッグ関数です。 本関数を使用した場合、以下の問題が発生する可能性があります。

    • Load(CriFsBinder, ArgString, long, long, Span<byte>)関数やGetFileSize(ArgString, out long)関数内で処理が長時間ブロックされる。
    • バインドしたディレクトリ内のファイルにアクセスする際、音声やムービーのストリーム再生が途切れる。

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

    BindFile(CriFsBinder, ArgString, out CriFsBind)

    LE Pro

    ファイルのバインド

    Declaration
    • C#
    • C
    public CriErr.Error BindFile(CriFsBinder srcbndrhn, ArgString path, out CriFsBind bndrid)
    CriError CRIAPI criFsBinder_BindFile(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, void *work, CriSint32 worksize, CriFsBindId *bndrid)
    Parameters
    Type Name Description
    CriFsBinder srcbndrhn

    バインド対象のファイルを検索するためのバインダーハンドル

    ArgString path

    バインドするファイルのパス名

    CriFsBind bndrid

    バインドID

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ファイルをバインドし、バインドIDを返します。 srcbndrhnのバインダーからpathで指定されたファイルを検索し、bndrhnにバインドします。 srcbndrhnがnullの場合、デフォルトデバイス上のファイルを検索します。 ワーク領域(work)のサイズは、GetWorkSizeForBindFile(ArgString, out int)で取得できます。 ワーク領域は、バインドIDが破棄されるまで保持して下さい。 メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にnull(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。 バインドを開始できない場合、バインドIDは BidNull が返されます。 バインドIDに BidNull 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。 バインドされたファイルはファイルオープン状態で保持します。 このため、内部的にCriFsLoaderを作成しています。 本関数は即時復帰関数です。本関数から復帰した直後は、ファイルのバインドはまだ完了しておらず、 バインドIDを利用したファイルへのアクセスは行えません。 バインドIDのバインド状態が完了( Complete )となった後に、 ファイルは利用可能となります。 バインド状態は GetStatus(CriFsBind, out Status) 関数で取得します。

    BindFileSection(CriFsBinder, ArgString, ulong, int, ArgString, out CriFsBind)

    LE Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error BindFileSection(CriFsBinder srcbndrhn, ArgString path, ulong offset, int size, ArgString sectionName, out CriFsBind bndrid)
    CriError CRIAPI criFsBinder_BindFileSection(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *path, CriUint64 offset, CriSint32 size, const CriChar8 *section_name, void *work, CriSint32 worksize, CriFsBindId *bndrid)
    Parameters
    Type Name Description
    CriFsBinder srcbndrhn

    バインド対象のファイルを検索するためのバインダーハンドル

    ArgString path

    バインドするファイルのパス名

    ulong offset

    データの開始位置(バイト)

    int size

    データサイズ(バイト)

    ArgString sectionName

    セクション名

    CriFsBind bndrid

    バインドID

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ファイルの一部分をバインドし、その箇所を仮想的なファイルとして扱えるよう設定します。 srcbndrhnのバインダーからpathで指定されたファイルを検索してバインドします。 srcbndrhnがnullの場合、デフォルトデバイスを使用します。 ワーク領域(work)のサイズは、GetWorkSizeForBindFileSection(ArgString, ArgString, out int)で取得できます。 ワーク領域は、バインドIDが破棄されるまで保持して下さい。 メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にnull(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。 バインドを開始できない場合、バインドIDは BidNull が返されます。 バインドIDに BidNull 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。 バインドされたファイルはファイルオープン状態で保持します。 このため、内部的にCriFsLoaderを作成しています。 本関数は即時復帰関数です。本関数から復帰した直後は、ファイルのバインドはまだ完了しておらず、 バインドIDを利用したファイルへのアクセスは行えません。 バインドIDのバインド状態が完了( Complete )となった後に、 ファイルは利用可能となります。 バインド状態は GetStatus(CriFsBind, out Status) 関数で取得します。

    See Also
    GetWorkSizeForBindFileSection(ArgString, ArgString, out int)
    GetStatus(CriFsBind, out Status)
    Unbind(CriFsBind)

    BindFiles(CriFsBinder, ArgString, out CriFsBind)

    Pro

    複数ファイルのバインド

    Declaration
    • C#
    • C
    public CriErr.Error BindFiles(CriFsBinder srcbndrhn, ArgString filelist, out CriFsBind bndrid)
    CriError CRIAPI criFsBinder_BindFiles(CriFsBinderHn bndrhn, CriFsBinderHn srcbndrhn, const CriChar8 *filelist, void *work, CriSint32 worksize, CriFsBindId *bndrid)
    Parameters
    Type Name Description
    CriFsBinder srcbndrhn

    バインド対象のファイルを検索するためのバインダーハンドル

    ArgString filelist

    バインドするファイル名のリスト(セパレータ:',''\t''\n' ターミネイタ:'\0')

    CriFsBind bndrid

    バインドID

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ファイルリスト(filelist)に列記されたファイルをバインドします。 ファイルはsrcbndrhnから検索されますが、srcbndrhnがnullの場合、デフォルトデバイスが使用されます。 ワーク領域のサイズは、GetWorkSizeForBindFiles(ArgString, out int) で取得できます。 ワーク領域は、バインドIDが破棄されるまで保持して下さい。 メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にnull(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。 バインドを開始できない場合、バインドIDは BidNull が返されます。 バインドIDに BidNull 以外が返された場合は内部リソースを確保していますので、 バインドの成功/失敗に関らず、不要になったバインドIDはアンバインドしてください。 バインドしたファイルはファイルオープン状態で保持します。 内部的には CriFsLoader がバインドIDに1つ作成され、ファイルオブジェクトがバインドするファイル数分使用されます。 本関数は即時復帰関数です。本関数から復帰した直後は、ファイルのバインドはまだ完了しておらず、 バインダーを利用したファイルへのアクセスは行えません。 バインド状態が完了( Complete )となった後に、ファイルは利用可能となります。 バインド状態は GetStatus(CriFsBind, out Status) 関数で取得します。

    CleanImplicitUnbindList()

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error CleanImplicitUnbindList()
    CriError CRIAPI criFsBinder_CleanImplicitUnbindList(void)
    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

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

    CloseFile(CriFsBind, out Status)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error CloseFile(CriFsBind bindId, out CriFsLoader.Status internalLoaderStatus)
    CriError CRIAPI criFsBinder_CloseFile(CriFsBindId bind_id, CriFsLoaderStatus *internal_loader_status)
    Parameters
    Type Name Description
    CriFsBind bindId

    バインドID

    CriFsLoader.Status internalLoaderStatus

    内部ローダーステータス

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインド中のファイルを一旦クローズします。 Unbind(CriFsBind) 関数と異なり、 CPKファイルのTOC情報をメモリ上に残したままファイルのみをクローズします。 (バインドIDに紐付けられているネイティブファイルのオブジェクトがクローズされます。)

    備考: 本関数は、CPKファイルはバインドした状態にしておきたいが、 他のファイルをオープンするため、一時的にファイルオブジェクトを解放したい場合等に使用します。 ※ファイルオブジェクト等のハードウェアリソースがプラットフォームで利用可能な上限数に達しない限り、 本関数を使用する必要はありません。 本関数は同期APIです。 本関数を実行すると、ファイルのオープン完了まで処理がブロックされます。 オープン処理を非同期に行いたい場合には、本関数の代わりに CloseFileAsync(CriFsBind, out CriFsLoader) 関数をご使用ください。

    注意: 本関数でクローズしたCPKファイルに対してアクセスすると、リードエラーが発生します。 本関数実行後、 ReopenFile(CriFsBind, out Status) 関数を実行するまでの間、 当該CPKファイルに対するアクセスが発生しないよう制御する必要があります。 本関数は、CPKファイルを直接バインドしているケースでのみ利用可能です。 ディレクトリバインドを使用しているケースや、ファイルバインドを使用しているケース、 CPKファイル内のコンテンツをバインドしているケースでは、本関数は使用できません。

    See Also
    ReopenFile(CriFsBind, out Status)

    CloseFileAsync(CriFsBind, out CriFsLoader)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error CloseFileAsync(CriFsBind bindId, out CriFsLoader internalLoader)
    CriError CRIAPI criFsBinder_CloseFileAsync(CriFsBindId bind_id, CriFsLoaderHn *internal_loader)
    Parameters
    Type Name Description
    CriFsBind bindId

    バインドID

    CriFsLoader internalLoader

    内部ローダーハンドル

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインド中のファイルを一旦クローズします。 処理が非同期な点を除き、 CloseFile(CriFsBind, out Status) 関数と同様の操作を行います。

    備考: 本関数は非同期処理用のAPIです。 本関数を実行すると、ファイルのクローズ完了を待つことなく処理が復帰します。 ファイルのクローズが完了したかどうかは、第 2 引数( internal_loader ) で返されるローダーオブジェクトを使用してチェックします。 (クローズ処理が完了したタイミングで、ローダーオブジェクトのステータスが Complete に遷移します。)

    注意: 第 2 引数( internal_loader )で返されるローダーオブジェクトは、 ライブラリ内でファイルアクセスのために使用される内部リソースです。 このオブジェクトをアプリケーション中で破棄しないでください。

    See Also
    CloseFile(CriFsBind, out Status)

    CompleteAsyncFileReopen(CriFsBind)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error CompleteAsyncFileReopen(CriFsBind bindId)
    CriError CRIAPI criFsBinder_CompleteAsyncFileReopen(CriFsBindId bind_id)
    Parameters
    Type Name Description
    CriFsBind bindId

    バインドID

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ReopenFileAsync(CriFsBind, out CriFsLoader) 関数によるファイルの再オープン情報を、 バインドIDに反映させ、再オープン処理を完了します。 ReopenFileAsync(CriFsBind, out CriFsLoader) 関数の実行で取得したローダーオブジェクトのステータスが Complete に遷移した事を確認してから実行してください。 ファイルを再オープンしたバインドIDに対して、 本関数を実行せずにロードを実行すると、ロードに失敗します。

    ReopenFile(CriFsBind, out Status) 関数に対しては本関数を実行する必要はありません。

    注意: ファイル再オープン用ローダーオブジェクトのステータスが Complete 以外の状態で本関数を実行すると、 本関数はエラーを返します。

    CreateWithWork()

    Pro

    CriFsBinderの作成

    Declaration
    • C#
    • C
    public static CriFsBinder CreateWithWork()
    CriError CRIAPI criFsBinder_CreateWithWork(CriFsBinderHn *bndrhn, void *work, CriSint32 work_size)
    Returns
    Type Description
    CriFsBinder

    CriErr.Error エラーコード

    Remarks

    説明: CriFsBinderを作成します。 バインダーを作成する際、ワーク領域を指定する点が CriFsBinder() 関数と異なります。 本関数で作成したバインダーは、ライブラリ初期化時に指定したワーク領域とは異なる領域に配置されます。 そのため、 CriFs.Config::num_binders の制限を受けません。 ( CriFs.Config::num_binders に指定した数のバインダーを作成した状態であっても、 本関数でさらにバインダーを作成することが可能です。) ワーク領域のサイズは GetWorkSize(out int) 関数で取得可能です。 バインダー作成前に GetWorkSize(out int) 関数で取得したサイズ分のメモリを確保し、本関数に指定してください。 本関数で作成したバインダーは、デフォルト状態では同時に1回しかバインド処理が行えません。 (ライブラリ初期化時に CriFs.Config::max_binds で指定した同時バインド可能な最大数を超えていないとしても、 同時に2回のバインドを行うとエラーが発生します。) 本関数で作成したバインダーで同時に2回以上のバインド処理を行う場合、 AddResourceForBinding(int) 関数で追加のリソースを指定する必要があります。 本関数でバインダーを作成した場合でも、 BindFiles(CriFsBinder, ArgString, out CriFsBind) 関数で複数のファイルをバインドする場合には、 別途ファイルオープン用のリソースがバインドするファイルの数分だけ必要となります。 BindFiles(CriFsBinder, ArgString, out CriFsBind) 関数を使用する場合には、 想定されるファイル数の上限をライブラリ初期化時に CriFs.Config::max_files に指定してください。

    注意: バインダーを破棄する( Dispose() 関数を実行する)までは、ワーク領域に対する読み書きが発生します。 ワーク領域として指定したメモリは、バインダーを破棄するまでは解放しないでください。

    See Also
    GetWorkSize(out int)
    AddResourceForBinding(int)

    Dispose()

    LE Pro

    バインダーの破棄

    Declaration
    • C#
    • C
    public void Dispose()
    CriError CRIAPI criFsBinder_Destroy(CriFsBinderHn bndrhn)
    Remarks

    説明: バインダーを破棄します。

    注意: 破棄するバインダーにバインドされているバインドIDも同時に破棄されます。 本関数で破棄できるのは、CriFsBinder() 関数により生成されたバインダーオブジェクトのみです。 GetHandle(CriFsBind, out CriFsBinder) 関数により CriFsBind から取得されたバインダーオブジェクトは破棄できません。 CriFsBind については Unbind(CriFsBind) 関数をご使用ください。

    Find(ArgString, out FileInfo, out NativeBool)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error Find(ArgString filepath, out CriFsBinder.FileInfo finfo, out NativeBool exist)
    CriError CRIAPI criFsBinder_Find(CriFsBinderHn bndrhn, const CriChar8 *filepath, CriFsBinderFileInfo *finfo, CriBool *exist)
    Parameters
    Type Name Description
    ArgString filepath

    ファイルのフルパス

    CriFsBinder.FileInfo finfo

    ファイル情報構造体

    NativeBool exist

    ファイル検索結果(CRI_TRUE:取得成功 CRI_FALSE:取得失敗)

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 指定されたファイルをバインダーから検索し、その情報を返します。 バインド状態が Complete であるバインドIDのみを検索対象とします。 ファイルが見付かった場合は existにtrueを、ファイル情報構造体(finfo)にファイル情報をセットします。 ファイルが見付からない場合、existにfalseをセットします。 finfoがnullの場合、existにファイルの検索結果のみをセットします。

    FindById(int, out FileInfo, out NativeBool)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error FindById(int id, out CriFsBinder.FileInfo finfo, out NativeBool exist)
    CriError CRIAPI criFsBinder_FindById(CriFsBinderHn bndrhn, CriFsFileId id, CriFsBinderFileInfo *finfo, CriBool *exist)
    Parameters
    Type Name Description
    int id

    CPKコンテンツファイルID

    CriFsBinder.FileInfo finfo

    ファイル情報構造体

    NativeBool exist

    ファイル検索結果(CRI_TRUE:取得成功 CRI_FALSE:取得失敗)

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインダーオブジェクトから、指定されたIDのファイルを検索し、その情報を返します。 ID情報つきCPKファイルをバインドしている必要があります。 バインド状態が Complete であるバインドIDのみを検索対象とします。 ファイルが見付かった場合は existにtrueをセットし、ファイル情報構造体(finfo)にファイル情報をセットします。 ファイルが見付からない場合、existにfalseをセットします。 finfoがnullの場合、existにファイルの検索結果(true/false)のみをセットします。

    GetBinderIdInfo(CriFsBind, out Info)

    Pro

    バインドID情報の取得

    Declaration
    • C#
    • C
    public static CriErr.Error GetBinderIdInfo(CriFsBind bndrid, out CriFsBinder.Info binf)
    CriError CRIAPI criFsBinder_GetBinderIdInfo(CriFsBindId bndrid, CriFsBinderInfo *binf)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    CriFsBinder.Info binf

    取得情報

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 指定されたバインドIDのバインダー種別(CPK/ファイル/ディレクトリ等)やバインドしたファイル名、プライオリティ設定などの 情報を取得します。

    GetContentsFileInfo(ArgString, out ContentsFileInfo)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetContentsFileInfo(ArgString path, out CriFsBinder.ContentsFileInfo cfinf)
    CriError criFsBinder_GetContentsFileInfo(CriFsBinderHn bndrhn, const CriChar8 *path, CriFsBinderContentsFileInfo *cfinf)
    Parameters
    Type Name Description
    ArgString path

    コンテンツファイルパス名

    CriFsBinder.ContentsFileInfo cfinf

    CriFsBinder.ContentsFileInfo構造体へのポインター

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ファイル名情報付きCPKファイルから、指定されたコンテンツファイル名のファイル情報を取得します。 指定されたコンテンツファイルを格納しているCPKが、ファイル名情報付CPKである必要があります。 指定したバインダーオブジェクトに、同じ名前のファイルが複数存在する場合、最初に見付けたファイルを 格納しているCPKが選択されます。 特定のCPKファイルを直接指定したい場合、GetHandle(CriFsBind, out CriFsBinder)関数により、そのCPKのバインダーIDから バインダーオブジェクトを取得し、本関数の引数としてください。

    注意: 本機能を使用するには、『CPK File Builder Ver.1.03以降』を使用して作成した、ファイル名情報付CPKを 用いる必要があります。

    GetContentsFileInfoById(int, out ContentsFileInfo)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetContentsFileInfoById(int id, out CriFsBinder.ContentsFileInfo cfinf)
    CriError CRIAPI criFsBinder_GetContentsFileInfoById(CriFsBinderHn bndrhn, CriFsFileId id, CriFsBinderContentsFileInfo *cfinf)
    Parameters
    Type Name Description
    int id

    ファイルID

    CriFsBinder.ContentsFileInfo cfinf

    CriFsBinder.ContentsFileInfo構造体へのポインター

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ID+ファイル名情報付きCPKファイルから、指定されたファイルIDのファイル情報を取得します。 指定されたファイルを格納しているCPKが、ID+ファイル名情報付CPKである必要があります。 指定したバインダーオブジェクトに、同じIDのファイルが複数存在する場合、最初に見付けたファイルを 格納しているCPKが選択されます。 特定のCPKファイルを直接指定したい場合、GetHandle(CriFsBind, out CriFsBinder)関数により、そのCPKのバインドIDから バインダーオブジェクトを取得し、本関数の引数としてください。

    注意: 本機能を使用するには、『CPK File Builder Ver.1.03以降』を使用して作成した、ID+ファイル名情報付CPKを 用いる必要があります。

    GetContentsFileInfoByIndex(CriFsBind, int, Span<ContentsFileInfo>, int)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error GetContentsFileInfoByIndex(CriFsBind bndrid, int index, Span<CriFsBinder.ContentsFileInfo> cfinf, int n)
    CriError CRIAPI criFsBinder_GetContentsFileInfoByIndex(CriFsBindId bndrid, CriSint32 index, CriFsBinderContentsFileInfo *cfinf, CriSint32 n)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    int index

    情報を取得するコンテンツファイルの先頭INDEX

    Span<CriFsBinder.ContentsFileInfo> cfinf

    CriFsBinder.ContentsFileInfo構造体配列

    int n

    情報を取得するコンテンツファイルの数

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: CPKファイルのコンテンツファイル、indexからn個分のファイル情報を取得します。 indexはCPK作成時、コンテンツファイルに対して0から割付られます。 index, nの上限値はGetBinderIdInfo(CriFsBind, out Info)関数で取得されるファイル数となります。 IDのみのモードで作成されたCPKは、「ディレクトリ名」、「ファイル名」、「ユーザー文字列」の情報を持たないため、 CriFsBinder.ContentsFileInfo構造体配列の該当メンバには null が格納されます。

    備考: 情報取得に失敗した場合であっても、本関数はエラー値を返さない場合があります。 ただし、その場合であっても、コンテンツファイル情報のファイル名がnullでかつ、IDが-1になっている事から、 情報取得に失敗した事を判定可能です。

    GetContentsFileUserString(ArgString, Span<byte>)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetContentsFileUserString(ArgString path, Span<byte> ustr)
    CriError criFsBinder_GetContentsFileUserString(CriFsBinderHn bndrhn, const CriChar8 *path, CriChar8 *ustr, CriSint32 length)
    Parameters
    Type Name Description
    ArgString path

    コンテンツファイルパス名

    Span<byte> ustr

    ユーザー文字列格納領域

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ファイル名情報付きCPKファイルから、指定されたコンテンツファイル名のファイル情報に含まれるユーザー文字列を取得します。 指定されたコンテンツファイルを格納しているCPKが、ファイル名情報付CPKである必要があり、 なおかつファイル情報にユーザー文字列が付与されている必要があります。 ユーザー文字列を付与するためには、CPK File Builder (GUI ツール) ならば「ファイル情報にアトリビュート文字列を埋め込む」を有効に、 CRI Packed File Makerコンソール版ならば「-attrstring」オプションを指定してCPKを作成してください。 詳細な作成方法はツールのマニュアルを参照してください。 CPKが上記の設定で作成されていない場合、本関数は失敗し、エラーを返します。 この場合、ustr には null が格納されます。 CPKは上記の設定で作成されたが、アトリビュートが指定されていないコンテンツファイルが本関数に指定された場合、 エラーは発生せずに ustr には "\0" が格納されます。 指定したバインダーオブジェクトに、同じ名前のファイルが複数存在する場合、最初に見付けたファイルを 格納しているCPKが選択されます。 特定のCPKファイルを直接指定したい場合、GetHandle(CriFsBind, out CriFsBinder)関数により、そのCPKのバインダーIDから バインダーオブジェクトを取得し、本関数の引数としてください。

    注意: 本機能を使用するには、『CPK File Builder Ver.1.03以降』を使用して作成した、ファイル名情報付CPKを 用いる必要があります。

    注意: ユーザー文字列の長さの制約は CRI File System ライブラリでは設けておりません。 ユーザー側でユーザー文字列の最大長を規定し、十分な格納領域を確保してください。 CPKツールのアトリビュート文字列を埋め込む機能でユーザー文字列を指定した場合、 "CRI_CFATTR:" という接頭辞が付与されますので、その分のサイズも考慮する必要があります。 ユーザー文字列の終端まで収まらないほど格納領域サイズが小さい場合は、格納領域の末尾を終端文字に置換し、警告を返します。

    GetContentsFileUserStringById(int, Span<byte>)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetContentsFileUserStringById(int id, Span<byte> ustr)
    CriError CRIAPI criFsBinder_GetContentsFileUserStringById(CriFsBinderHn bndrhn, CriFsFileId id, CriChar8 *ustr, CriSint32 length)
    Parameters
    Type Name Description
    int id

    ファイルID

    Span<byte> ustr

    ユーザー文字列格納領域

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 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ファイルを直接指定したい場合、GetHandle(CriFsBind, out CriFsBinder)関数により、そのCPKのバインドIDから バインダーオブジェクトを取得し、本関数の引数としてください。

    注意: 本機能を使用するには、『CPK File Builder Ver.1.03以降』を使用して作成した、ID+ファイル名情報付CPKを 用いる必要があります。

    注意: ユーザー文字列の長さの制約は CRI File System ライブラリでは設けておりません。 ユーザー側でユーザー文字列の最大長を規定し、十分な格納領域を確保してください。 CPKツールのアトリビュート文字列を埋め込む機能でユーザー文字列を指定した場合、 "CRI_CFATTR:" という接頭辞が付与されますので、その分のサイズも考慮する必要があります。 ユーザー文字列の終端まで収まらないほど格納領域サイズが小さい場合は、格納領域の末尾を終端文字に置換し、警告を返します。

    GetFileSize(ArgString, out long)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetFileSize(ArgString filepath, out long size)
    CriError CRIAPI criFsBinder_GetFileSize(CriFsBinderHn bndrhn, const CriChar8 *filepath, CriSint64 *size)
    Parameters
    Type Name Description
    ArgString filepath

    ファイルのフルパス

    long size

    ファイルのサイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 指定されたファイルのファイルサイズを取得します。 まず、bndrhn のバインダーから目的のファイルを検索します。 bndrhn に目的のファイルが存在しない場合、デフォルトデバイスのfilepathのファイルを探します。 このとき、ファイルをオープン待ちが入る場合があります。 バインド状態が Complete であるバインドIDが検索対象とします。 指定されたファイルが存在しない場合、sizeには負値が設定されます。

    備考: 本関数は、内部的に Find(ArgString, out FileInfo, out NativeBool) 関数を実行し、 ファイルがバインダーに登録されていなければファイルI/Oにアクセスしてファイルの有無を調べる、 という実装になっています。 (バインダーに登録されていないファイルや、存在しないファイルに対して本関数を実行した場合、 ファイルI/Oへのアクセスが発生し、長時間処理がブロックされる可能性があります。) ファイルがバインダーに登録されているかどうかをチェックしたい場合には、 本関数の代わりに、 Find(ArgString, out FileInfo, out NativeBool) 関数をご利用ください。

    注意: 以下のケースでは、本関数内で長時間処理がブロックされる場合があります。

    • バインダーオブジェクトにnullを指定した場合
    • バインダーに登録されていないファイルを指定した場合
    • 無効なパス(存在しないファイル)を指定した場合
    • BindDirectory(CriFsBinder, ArgString, out CriFsBind)関数でディレクトリをバインドしたオブジェクトを指定した場合
    See Also
    GetFileSizeById(int, out long)
    Find(ArgString, out FileInfo, out NativeBool)

    GetFileSizeById(int, out long)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetFileSizeById(int id, out long size)
    CriError CRIAPI criFsBinder_GetFileSizeById(CriFsBinderHn bndrhn, CriFsFileId id, CriSint64 *size)
    Parameters
    Type Name Description
    int id

    ファイルのID

    long size

    ファイルのサイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ファイルサイズを取得します。 ID情報つきCPKファイルがバインドされている必要があります。 bndrhn のバインダーから目的のファイルを検索します。 バインド状態が Complete であるCPKバインドIDのみを検索対象とします。

    See Also
    GetFileSize(ArgString, out long)

    GetHandle(CriFsBind, out CriFsBinder)

    Pro

    CriFsBinderの取得

    Declaration
    • C#
    • C
    public static CriErr.Error GetHandle(CriFsBind bndrid, out CriFsBinder bndrhn)
    CriError CRIAPI criFsBinder_GetHandle(CriFsBindId bndrid, CriFsBinderHn *bndrhn)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    CriFsBinder bndrhn

    バインダーハンドル

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: CriFsBindをCriFsBinderに変換します。 新たにCriFsBinderを生成するものではなく、型変換を行うものと考えてください。 よって、実体としては同じものを指しており、本関数でCriFsBinderのリソースを消費することはありません。 元のCriFsBindもそのまま CriFsBind として使用できます。 バインドされたファイルの情報を得る場合、バインドされたバインドIDが順に検索されます。 このため、特定のバインドIDにあるファイルにアクセスしたい場合、目的のバインドIDから バインダーオブジェクトを取得して使用することで、効率的な検索を行うことが可能になります。

    注意: 本関数により取得された CriFsBinder は Dispose() 関数では破棄できません。 元となる CriFsBind を Unbind(CriFsBind) 関数でアンバインドしてください。

    See Also
    Unbind(CriFsBind)

    GetNumberOfGroupFiles(CriFsBind, ArgString, ArgString, out int)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error GetNumberOfGroupFiles(CriFsBind bndrid, ArgString groupname, ArgString attrname, out int groupfiles)
    CriError CRIAPI criFsBinder_GetNumberOfGroupFiles(CriFsBindId bndrid, const CriChar8 *groupname, const CriChar8 *attrname, CriSint32 *groupfiles)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    ArgString groupname

    グループ名

    ArgString attrname

    アトリビュート名

    int groupfiles

    グループファイル数

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

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

    GetPriority(CriFsBind, out int)

    Pro

    プライオリティ値の取得

    Declaration
    • C#
    • C
    public static CriErr.Error GetPriority(CriFsBind bndrid, out int priority)
    CriError CRIAPI criFsBinder_GetPriority(CriFsBindId bndrid, CriSint32 *priority)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    int priority

    プライオリティ値

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインドIDのプライオリティ値を取得します。 プライオリティにより、バインダーオブジェクト内における、バインドIDの検索順を制御できます。 バインド時のプライオリティ値は0です。 同プライオリティ内の検索順は、後に SetPriority(CriFsBind, int) が指定された順番になります。 SetPriority(CriFsBind, int) が呼び出されていない場合、先にバインドされた順番になります。 プライオリティ値の大きい方が高プライオリティとなり、検索順が高くなります。

    GetResourceSizeForBinding(int, out int)

    Pro

    バインドリソースサイズの取得

    Declaration
    • C#
    • C
    public static CriErr.Error GetResourceSizeForBinding(int maxBinds, out int workSize)
    CriError criFsBinder_GetResourceSizeForBinding(CriSint32 max_binds, CriSint32 *work_size)
    Parameters
    Type Name Description
    int maxBinds

    最大同時バインド回数

    int workSize

    ワーク領域サイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: AddResourceForBinding(int) 関数の実行に必要なワーク領域のサイズを取得します。 CreateWithWork() 関数で作成したバインダーにバインド処理用のリソースを追加する際には、 本関数でワーク領域のサイズを取得し、取得したサイズ分のメモリを確保する必要があります。

    See Also
    CreateWithWork()
    AddResourceForBinding(int)

    GetStatus(CriFsBind, out Status)

    LE Pro

    バインド状態の取得

    Declaration
    • C#
    • C
    public static CriErr.Error GetStatus(CriFsBind bndrid, out CriFsBinder.Status status)
    CriError CRIAPI criFsBinder_GetStatus(CriFsBindId bndrid, CriFsBinderStatus *status)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    CriFsBinder.Status status

    CriFsBinder.Statusバインダーステータス

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 指定されたバインドIDのバインド状態を取得します。 バインド状態が Complete になるまでは、 そのバインドIDによるファイルアクセスを行えません。

    GetTotalGroupDataSize(CriFsBind, ArgString, ArgString, out long)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error GetTotalGroupDataSize(CriFsBind bndrid, ArgString groupname, ArgString attrname, out long datasize)
    CriError CRIAPI criFsBinder_GetTotalGroupDataSize(CriFsBindId bndrid, const CriChar8 *groupname, const CriChar8 *attrname, CriSint64 *datasize)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    ArgString groupname

    グループ名

    ArgString attrname

    アトリビュート名

    long datasize

    グループロードサイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

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

    GetWorkSize(out int)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error GetWorkSize(out int workSize)
    CriError CRIAPI criFsBinder_GetWorkSize(CriSint32 *work_size)
    Parameters
    Type Name Description
    int workSize

    ワーク領域サイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインダーの作成に必要なワーク領域のサイズを取得します。 CreateWithWork() 関数でバインダーを作成する場合、 本関数でワーク領域のサイズを取得し、取得したサイズ分のメモリを確保する必要があります。

    備考: CriFsBinder() 関数を使用してバインダーを作成する場合、本関数を使用する必要はありません。

    See Also
    CreateWithWork()

    GetWorkSizeForBindCpk(ArgString, out int)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetWorkSizeForBindCpk(ArgString path, out int worksize)
    CriError CRIAPI criFsBinder_GetWorkSizeForBindCpk(CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
    Parameters
    Type Name Description
    ArgString path

    バインドするCPKファイルのパス名

    int worksize

    必要ワークサイズ(バイト)

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: BindCpk(CriFsBinder, ArgString, out CriFsBind)関数に指定するワークサイズを取得します。 本関数では、CPKの情報を解析するために最低限必要とされるワークサイズを取得できます。 コンテンツファイル数の少いCPKファイルであれば、本関数で得られる数値のままでもCPKをバインドできる可能性があります。 CPKバインド中にワークメモリが不足した場合、エラーコールバック関数で不足分の容量が示されます。 *** CPKバインドに必要なワークサイズの取得するには、以下の方法があります。 *** 1. エラーコールバックを利用する。 CPKバインド中にワークメモリが不足した場合、エラーコールバック関数により不足分のサイズが示されます。 現在確保しているワーク領域のサイズに、エラーコールバックで得られるサイズを加算してワーク領域を再確保し、CPKバインドをやりなおします。 CPKバインドをやりなおす場合、メモリ不足エラーコールバックを起こしたバインダーIDをアンバインドする必要があります。 2. メモリ確保/解放コールバック関数( SetUserHeapFunc(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) )を利用する。 CPKバインド時にワークメモリの確保/解放が必要な際に呼出されるコールバック関数を登録します。 バインド時に適時メモリ確保コールバック関数が呼出された場合、要求されたメモリを確保してエラーコールバック関数の返値として返します。 3. 必要ワークサイズ取得API( AnalyzeWorkSizeForBindCpk(ArgString, out int) )を利用する。 バインドするCPKから情報を取得し、必要となるワークサイズを算出する関数を利用します。 この関数は完了復帰関数で、関数内部でCPKファイルから情報を読み出しています。そのため関数終了までに時間がかかります。 4. CPKパッキングツールを利用する。 パッキングツールにCPKファイルをドラッグ&ドロップし、CPKファイルビューア[詳細]テキストボックスの 「Enable Filename info.」「Enable ID info.」[Enable Group info.]項目に表示されるバイト数を、 本関数で取得される必要ワークサイズに加算します。 ただし、この方法で得られるワークサイズは目安ですので、メモリ不足エラーコールバックが起きる可能性があります。

    GetWorkSizeForBindDirectory(ArgString, out int)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetWorkSizeForBindDirectory(ArgString path, out int worksize)
    CriError CRIAPI criFsBinder_GetWorkSizeForBindDirectory(CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
    Parameters
    Type Name Description
    ArgString path

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

    int worksize

    必要ワークサイズ(バイト)

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: BindDirectory(CriFsBinder, ArgString, out CriFsBind)関数に指定するワークサイズを取得します。

    GetWorkSizeForBindFile(ArgString, out int)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetWorkSizeForBindFile(ArgString path, out int worksize)
    CriError CRIAPI criFsBinder_GetWorkSizeForBindFile(CriFsBinderHn srcbndrhn, const CriChar8 *path, CriSint32 *worksize)
    Parameters
    Type Name Description
    ArgString path

    バインドするファイルのパス名

    int worksize

    必要ワークサイズ(バイト)

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: BindFile(CriFsBinder, ArgString, out CriFsBind)関数に指定するワークサイズを取得します。

    GetWorkSizeForBindFileSection(ArgString, ArgString, out int)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetWorkSizeForBindFileSection(ArgString path, ArgString sectionName, out int worksize)
    CriError CRIAPI criFsBinder_GetWorkSizeForBindFileSection(CriFsBinderHn srcbndrhn, const CriChar8 *path, const CriChar8 *section_name, CriSint32 *worksize)
    Parameters
    Type Name Description
    ArgString path

    バインドするファイルのパス名

    ArgString sectionName

    セクション名

    int worksize

    必要ワークサイズ(バイト)

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: BindFileSection(CriFsBinder, ArgString, ulong, int, ArgString, out CriFsBind)関数に指定するワークサイズを取得します。

    GetWorkSizeForBindFiles(ArgString, out int)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetWorkSizeForBindFiles(ArgString filelist, out int worksize)
    CriError CRIAPI criFsBinder_GetWorkSizeForBindFiles(CriFsBinderHn srcbndrhn, const CriChar8 *filelist, CriSint32 *worksize)
    Parameters
    Type Name Description
    ArgString filelist

    バインドするファイル名のリスト(セパレータ:',''\t''\n' ターミネイタ:'\0')

    int worksize

    必要ワークサイズ(バイト)

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: BindFiles(CriFsBinder, ArgString, out CriFsBind)関数に指定するワークサイズを取得します。

    GetWorkSizeForCpkIdAccessTable(CriFsBind, int, out int)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error GetWorkSizeForCpkIdAccessTable(CriFsBind bindrid, int steps, out int worksize)
    CriError CRIAPI criFsBinder_GetWorkSizeForCpkIdAccessTable(CriFsBindId bindrid, CriSint32 steps, CriSint32 *worksize)
    Parameters
    Type Name Description
    CriFsBind bindrid

    バインドID

    int steps

    アクセス情報テーブル作成の作成間隔

    int worksize

    アクセス情報テーブル作成用ワーク領域のサイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ID情報付CPKのアクセス情報テーブルの作成に必要なワーク領域のサイズを取得します。 アクセス情報テーブルとは、CPKのコンテンツファイルにアクセスする際の処理を前もって行うことで、 アクセス速度を向上させるためのものです。 ID情報のないCPKではアクセステーブルは必要ありません。 本関数はID情報付CPKに対してのみ有効です。 本関数は完了復帰関数です。 アクセス情報テーブルの領域は、該当CPKがバインドされている間は解放したり、他へ転用しないでください。

    アクセス情報テーブルの作成間隔について stepsに1を指定した場合、全てのコンテンツファイルに対するアクセス情報テーブルが作成されます。 この場合、アクセス情報テーブルの要素数はコンテンツファイル数と同じになります。 stepsに1より大きい値を指定した場合は、指定stepsおきのコンテンツファイルに対するアクセス情報テーブルが作成されます。 アクセス情報テーブルの要素数はstepsに応じて変化します。 全てのコンテンツファイルに対するテーブルを準備しないので、stepsに1を設定したときに比べて、 ファイルアクセス時の処理がかかりますが、アクセス情報テーブルの領域を小さくできます。

    ReopenFile(CriFsBind, out Status)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error ReopenFile(CriFsBind bindId, out CriFsLoader.Status internalLoaderStatus)
    CriError CRIAPI criFsBinder_ReopenFile(CriFsBindId bind_id, CriFsLoaderStatus *internal_loader_status)
    Parameters
    Type Name Description
    CriFsBind bindId

    バインドID

    CriFsLoader.Status internalLoaderStatus

    内部ローダーステータス

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: CloseFile(CriFsBind, out Status) 関数等でクローズしたファイルを再度オープンし直します。

    備考: 本関数は同期APIです。 本関数を実行すると、ファイルのオープン完了まで処理がブロックされます。 オープン処理を非同期に行いたい場合には、本関数の代わりに ReopenFileAsync(CriFsBind, out CriFsLoader) 関数をご使用ください。

    注意: リードエラー等によりファイルの再オープンに失敗した場合、 第 2 引数( internal_loader_status )が Error になります。

    See Also
    CloseFile(CriFsBind, out Status)

    ReopenFileAsync(CriFsBind, out CriFsLoader)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error ReopenFileAsync(CriFsBind bindId, out CriFsLoader internalLoader)
    CriError CRIAPI criFsBinder_ReopenFileAsync(CriFsBindId bind_id, CriFsLoaderHn *internal_loader)
    Parameters
    Type Name Description
    CriFsBind bindId

    バインドID

    CriFsLoader internalLoader

    内部ローダーハンドル

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: CloseFile(CriFsBind, out Status) 関数等でクローズしたファイルを再度オープンし直します。 処理が非同期な点を除き、 ReopenFile(CriFsBind, out Status) 関数と同様の操作を行います。

    備考: 本関数は非同期処理用のAPIです。 本関数を実行すると、ファイルのオープン完了を待つことなく処理が復帰します。 ファイルのオープンが完了したかどうかは、第 2 引数( internal_loader ) で返されるローダーオブジェクトを使用してチェックします。 (オープン処理が完了したタイミングで、ローダーオブジェクトのステータスが Complete に遷移します。) ファイルオープンの完了を確認した後、CompleteAsyncFileReopen(CriFsBind) 関数を使い、 バインドIDに対してファイルの再オープンを完了してください。

    注意: 第 2 引数( internal_loader )で返されるローダーオブジェクトは、 ライブラリ内でファイルアクセスのために使用される内部リソースです。 このオブジェクトをアプリケーション中で破棄しないでください。 リードエラー等によりファイルの再オープンに失敗した場合、 第 2 引数( internal_loader_status )で返されたローダーオブジェクトのステータスが Error になります。

    See Also
    ReopenFile(CriFsBind, out Status)

    SetCurrentDirectory(CriFsBind, ArgString)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error SetCurrentDirectory(CriFsBind bndrId, ArgString path)
    CriError CRIAPI criFsBinder_SetCurrentDirectory(CriFsBindId bndrId, const CriChar8 *path, void *work, CriSint32 worksize)
    Parameters
    Type Name Description
    CriFsBind bndrId

    バインドID

    ArgString path

    カレントディレクトリ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインドIDにカレントディレクトリを設定します。 必要なワーク領域が確保できない場合、カレントディレクトリの設定に失敗します。 この場合、既に設定されているカレントディレクトリ設定は破棄されます。 バインドIDを利用してファイルを参照する際に、カレントディレクトリがパス名の前に付加されます。 指定するワーク領域のサイズは、設定するカレントディレクトリ名を格納するために使用されます。 最低でも、strlen(path)+1 バイトの領域を確保して渡してください。 メモリ確保/解放コールバック関数が登録されている場合、ワーク領域にnull(ワークサイズは0)を設定すると、 必要なワーク領域をメモリ確保/解放コールバック関数を使用して動的に確保します。

    SetPathSeparatorForBindFiles(ArgString)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error SetPathSeparatorForBindFiles(ArgString filter)
    CriError CRIAPI criFsBinder_SetPathSeparatorForBindFiles(const CriChar8 *filter)
    Parameters
    Type Name Description
    ArgString filter

    セパレータとして使用する文字の一覧

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: BindFiles(CriFsBinder, ArgString, out CriFsBind) 関数がセパレータとして解釈する文字を変更します。 BindFiles(CriFsBinder, ArgString, out CriFsBind) 関数を使って複数のファイルをバインドする場合、 ファイルパスをセパレータで結合した文字列を指定する必要があります。 デフォルト状態では、CRI File Systemライブラリは「,」「\t」「\n」 の3つをセパレータとして扱います。 セパレータに上記以外の文字を使用したい場合、 本関数でセパレータに該当する文字を変更することが可能です。 第一引数の filter には、 セパレータとして使用する文字の一覧を格納した文字列を指定します。 例えば、 "@+-*" を指定した場合、 「@」「+」「-」「*」の4種類の文字がセパレータとして扱われます。

    備考: filter に空文字列("")を指定した場合、セパレータが無効になります。 filter に null を指定した場合、設定がデフォルト状態に戻ります。

    注意: BindFiles(CriFsBinder, ArgString, out CriFsBind) 関数以外の関数にセパレータを含むパスを渡した場合、 CRI File Systemライブラリは不正なパスとして処理されます。 (セパレータ以降のパスが無効になります。) BindFiles(CriFsBinder, ArgString, out CriFsBind) 関数を使用しない場合でも、 アプリケーション中で「,」「\t」「\n」を含むパスを扱う場合には、 本関数で事前にセパレータに変更しておく必要があります。 フィルターに指定できる文字の最大数は、現状 7 文字までです。

    SetPriority(CriFsBind, int)

    Pro

    プライオリティ値の設定

    Declaration
    • C#
    • C
    public static CriErr.Error SetPriority(CriFsBind bndrid, int priority)
    CriError CRIAPI criFsBinder_SetPriority(CriFsBindId bndrid, CriSint32 priority)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    int priority

    プライオリティ値

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインドIDにプライオリティを設定します。 プライオリティにより、バインダーオブジェクト内における、バインドIDの検索順を制御できます。 バインド時のプライオリティ値は0です。 同プライオリティ内の検索順は、後に SetPriority(CriFsBind, int) が指定された順番になります。 SetPriority(CriFsBind, int) が呼び出されていない場合、先にバインドされた順番になります。 プライオリティ値の大きい方が高プライオリティとなり、検索順が高くなります。

    SetUserHeapFunc(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error SetUserHeapFunc(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr> allocfunc, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> freefunc, IntPtr obj)
    CriError CRIAPI criFsBinder_SetUserHeapFunc(CriFsMallocFunc allocfunc, CriFsFreeFunc freefunc, void *obj)
    Parameters
    Type Name Description
    delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr> allocfunc

    メモリ確保関数

    delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> freefunc

    メモリ解放関数

    IntPtr obj

    メモリ管理オブジェクト

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: CriFsBinder関数の引数で指定するワーク領域に null を指定した場合、内部から呼ばれるメモリ管理関数を登録します。 CriFsBinder関数に null 以外を指定した場合は、渡された領域を利用します。 本関数により、CriFsBinder関数に必要なワーク領域の管理をユーザー独自のメモリ管理関数で動的に行うことが可能になります。 本関数によりメモリ管理関数を設定する場合は、 InitializeLibrary(in Config) 関数の直後に本関数を呼び出してください。 本関数の引数allocfunc, freefuncがnullの場合、登録されたメモリ管理関数を削除します。 CriFsBinder関数は、現在登録されているメモリ管理関数を使用しますので、一旦登録されたメモリ管理関数を削除/変更する場合は、 登録されたメモリ管理関数を利用して確保されたメモリ領域が無いことを確認するようにしてください。

    SetUserMallocFunction(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, IntPtr) 関数との関係: 本関数で登録されるメモリ管理関数はCriFsBinder関数での使用に限定されます。 本関数でメモリ管理関数を登録せず、SetUserMallocFunction(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, IntPtr) 関数で関数が登録されている場合は、 SetUserMallocFunction(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, IntPtr) 関数で登録された関数がメモリ確保時に呼出されます。 本関数で登録された関数がある場合は、本関数で登録されたメモリ確保関数が呼出されます。

    CPKバインドについて: CPKバインド時には、GetWorkSizeForBindCpk(ArgString, out int)関数の項にも記されてる通り、CPK解析に必要なワーク領域のサイズが CPKの構成に依ってしまうので、事前に必要なワークサイズを見積ることが困難です。 本関数により、CPK解析エンジンが要求するメモリの管理をユーザー独自のメモリ管理関数で行うことが可能になります。

    SetupCpkIdAccessTable(CriFsBind, int)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error SetupCpkIdAccessTable(CriFsBind binderid, int steps)
    CriError CRIAPI criFsBinder_SetupCpkIdAccessTable(CriFsBindId binderid, CriSint32 steps, void *work, CriSint32 worksize)
    Parameters
    Type Name Description
    CriFsBind binderid

    バインドID

    int steps

    アクセス情報テーブル作成の作成間隔

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

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

    Unbind(CriFsBind)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error Unbind(CriFsBind bndrid)
    CriError CRIAPI criFsBinder_Unbind(CriFsBindId bndrid)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインドIDをバインダーから削除します。 本関数は完了復帰関数です。 指定されたバインドIDを削除できない場合、Ngを返します。

    補足: 必要に応じてファイルのクローズ処理を行いますので、実行環境により数msecかかる場合があります。 アンバインドするバインドIDに依存している他のバインドIDも同時にアンバインドされます(暗黙的アンバインド)。 例えば、CPKバインドIDのコンテンツファイルをFILEバインドしているバインドIDは、 参照元のCPKバインドIDがアンバインドされると、暗黙的アンバンドされます。 暗黙的にアンバインドされた項目は、暗黙的アンバインドリストに追加されます。 暗黙的アンバインドされたバインドIDは、通常どおりにUnbind(CriFsBind)関数でアンバインドするか、 CleanImplicitUnbindList()関数で暗黙的アンバインドリストをクリアする必要があります。

    UnbindAsync(CriFsBind)

    Pro

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

    Declaration
    • C#
    • C
    public static CriErr.Error UnbindAsync(CriFsBind bndrid)
    CriError CRIAPI criFsBinder_UnbindAsync(CriFsBindId bndrid)
    Parameters
    Type Name Description
    CriFsBind bndrid

    バインドID

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: バインドIDをバインダーから削除します。 本関数は即時復帰関数です。 指定されたバインドIDを削除できない場合、Ngを返します。 アンバインド処理を進行させるには、サーバー処理 criFsExecuteMain 関数と、GetStatus(CriFsBind, out Status) 関数の 呼び出しが必要です。

    アンバインド完了の検知: アンバインド処理の完了は GetStatus(CriFsBind, out Status) 関数で取得されるステータスにより判断します。 アンバインド処理中のステータスは Unbind になります。 アンバインド完了後のステータスは Removed となります。

    補足: バインドIDとして取り得る値で、その時点において使用されていない値を指定した場合、取得されるステータスは Removedになります。 アンバインドするバインドIDに依存している他のバインドIDも同時にアンバインドされます(暗黙的アンバインド)。 例えば、CPKバインドIDのコンテンツファイルをFILEバインドしているバインドIDは、 参照元のCPKバインドIDがアンバインドされると、暗黙的アンバンドされます。 暗黙的にアンバインドされた項目は、暗黙的アンバインドリストに追加されます。 暗黙的アンバインドされたバインドIDは、通常どおりにUnbind(CriFsBind)関数でアンバインドするか、 CleanImplicitUnbindList()関数で暗黙的アンバインドリストをクリアする必要があります。

    Implements

    IDisposable
    In this article
    Back to top Generated by DocFX