CRIWARE for C#
Search Results for

    Show / Hide Table of Contents

    Class CriFsLoader

    CriFsLoaderハンドル

    Inheritance
    object
    CriFsLoader
    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 CriFsLoader : IDisposable

    Constructors

    CriFsLoader()

    CriFsLoaderの作成

    Declaration
    • C#
    • C
    public CriFsLoader()
    CriError CRIAPI criFsLoader_Create(CriFsLoaderHn *loader)
    Remarks

    説明: CriFsLoaderを作成します。

    Properties

    LoadEndCallback

    コールバックイベントオブジェクト

    Declaration
    public CriFsLoader.LoadEndCbFunc LoadEndCallback { get; }
    Property Value
    Type Description
    CriFsLoader.LoadEndCbFunc
    See Also
    SetLoadEndCallback(delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr)

    NativeHandle

    ネイティブハンドル

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

    Methods

    CreateWithWork()

    Pro

    CriFsLoaderの作成

    Declaration
    • C#
    • C
    public static CriFsLoader CreateWithWork()
    CriError CRIAPI criFsLoader_CreateWithWork(CriFsLoaderHn *loader, void *work, CriSint32 work_size)
    Returns
    Type Description
    CriFsLoader

    CriFsLoaderオブジェクト

    Remarks

    説明: CriFsLoaderを作成します。 ローダーを作成する際、ワーク領域を指定する点が CriFsLoader() 関数と異なります。 本関数で作成したローダーは、ライブラリ初期化時に指定したワーク領域とは異なる領域に配置されます。 そのため、 CriFs.Config::num_loaders の制限を受けません。 ( CriFs.Config::num_loaders に指定した数のローダーを作成した状態であっても、 本関数でさらにローダーを作成することが可能です。) ワーク領域のサイズは GetWorkSize(out int) 関数で取得可能です。 ローダー作成前に GetWorkSize(out int) 関数で取得したサイズ分のメモリを確保し、本関数に指定してください。

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

    See Also
    GetWorkSize(out int)

    DecompressData(IntPtr, long, Span<byte>)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error DecompressData(IntPtr src, long srcSize, Span<byte> dst)
    CriError CRIAPI criFsLoader_DecompressData(CriFsLoaderHn loader, void *src, CriSint64 src_size, void *dst, CriSint64 dst_size)
    Parameters
    Type Name Description
    IntPtr src

    圧縮データアドレス

    long srcSize

    圧縮データサイズ

    Span<byte> dst

    展開先メモリアドレス

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: メモリ上に配置された圧縮データを、別のメモリ領域に展開します。 本関数は即時復帰関数です。 ロードの完了状態を取得するには GetStatus(out Status)関数を使用してください。

    備考: 入力データが圧縮されていない場合、 本関数は入力データを出力アドレスへそのままコピーします。

    注意: 本関数を使用するには、Ver.2.19.21以降のCRI File System Toolsを使用してデータを作成する必要があります。 (データを作成したツールが古い場合、データが展開されません。) 本関数は、CRI独自のソフトウェア圧縮コーデックにしか対応していません。 ハードウェアデコーダーを使用する場合や、プラットフォーム固有のコーデックを使用している場合、 本関数ではデータを展開できません。

    See Also
    GetStatus(out Status)

    Dispose()

    LE Pro

    CriFsLoaderの破棄

    Declaration
    • C#
    • C
    public void Dispose()
    CriError CRIAPI criFsLoader_Destroy(CriFsLoaderHn loader)
    Remarks

    説明: CriFsLoaderを破棄します。

    注意: 本関数をロード完了コールバック内で実行しないでください。

    See Also
    CriFsLoader()

    GetIoError(out IoError)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error GetIoError(out CriFs.IoError ioErr)
    CriError CRIAPI criFsLoader_GetIoError(CriFsLoaderHn loader, CriFsIoError *io_err)
    Parameters
    Type Name Description
    CriFs.IoError ioErr

    I/Oエラーコード

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: I/Oのエラーコードを取得します。 GetStatus(out Status) 関数がステータスがエラー状態になった場合、 本関数を実行することでI/Oインターフェイスから返されたエラーコードを 取得することが可能です。

    See Also
    GetStatus(out Status)

    GetLoadSize(out long)

    Pro

    ロードサイズの取得

    Declaration
    • C#
    • C
    public CriErr.Error GetLoadSize(out long size)
    CriError CRIAPI criFsLoader_GetLoadSize(CriFsLoaderHn loader, CriSint64 *size)
    Parameters
    Type Name Description
    long size

    ロードサイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ロードされたサイズを取得します。

    GetPriority(out Priority)

    Pro

    プライオリティの取得

    Declaration
    • C#
    • C
    public CriErr.Error GetPriority(out CriFsLoader.Priority prio)
    CriError CRIAPI criFsLoader_GetPriority(CriFsLoaderHn loader, CriFsLoaderPriority *prio)
    Parameters
    Type Name Description
    CriFsLoader.Priority prio

    読み込みプライオリティ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: データロードのプライオリティを取得します。

    See Also
    SetPriority(Priority)

    GetProgress(out long, out long)

    Pro

    ロード進行状況の取得

    Declaration
    • C#
    • C
    public CriErr.Error GetProgress(out long progress, out long requestSize)
    CriError CRIAPI criFsLoader_GetProgress(CriFsLoaderHn loader, CriSint64 *progress, CriSint64 *request_size)
    Parameters
    Type Name Description
    long progress

    ロード進行状況(読み込み済みサイズ)

    long requestSize

    ロード要求サイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ロード進行状況を取得します。 本関数で取得できる値は、ロード進行状況の確認、ロード失敗時のリジューム処理などに利用できます。

    GetStatus(out Status)

    Pro

    ロードステータスの取得

    Declaration
    • C#
    • C
    public CriErr.Error GetStatus(out CriFsLoader.Status status)
    CriError CRIAPI criFsLoader_GetStatus(CriFsLoaderHn loader, CriFsLoaderStatus *status)
    Parameters
    Type Name Description
    CriFsLoader.Status status

    ロードステータス

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    GetWorkSize(out int)

    Pro

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

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

    ワーク領域サイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

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

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

    See Also
    CreateWithWork()

    Load(CriFsBinder, ArgString, long, long, Span<byte>)

    Pro

    データのロード

    Declaration
    • C#
    • C
    public CriErr.Error Load(CriFsBinder binder, ArgString path, long offset, long loadSize, Span<byte> buffer)
    CriError CRIAPI criFsLoader_Load(CriFsLoaderHn loader, CriFsBinderHn binder, const CriChar8 *path, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
    Parameters
    Type Name Description
    CriFsBinder binder

    CriFsBinderハンドル

    ArgString path

    ファイルパス名

    long offset

    ファイルの先頭からのオフセット位置

    long loadSize

    ロードサイズ

    Span<byte> buffer

    バッファーへのポインター

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 指定されたバインダーとファイル名で、データの読み込みを開始します。 ファイル内の offset バイト目から、load_size バイト分読み込みます。 本関数は即時復帰関数です。 ロードの完了状態を取得するには GetStatus(out Status)関数を使用してください。 また、本関数は指定された CriFsBinder オブジェクトを介して CPK ファイル内の圧縮コンテンツを読み込むこともできます。

    注意: 圧縮コンテンツの読み込みに際して、0 より大きなオフセット位置を指定した場合はエラーになります。 また、圧縮コンテンツコンテンツを先頭から一部分だけ読み込むということもできません。コンテンツ全体を読み込んでください。

    See Also
    GetStatus(out Status)

    LoadById(CriFsBinder, int, long, long, Span<byte>)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error LoadById(CriFsBinder binder, int id, long offset, long loadSize, Span<byte> buffer)
    CriError CRIAPI criFsLoader_LoadById(CriFsLoaderHn loader, CriFsBinderHn binder, CriFsFileId id, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
    Parameters
    Type Name Description
    CriFsBinder binder

    CriFsBinderハンドル

    int id

    ファイルID

    long offset

    ファイルの先頭からのオフセット位置

    long loadSize

    ロードサイズ

    Span<byte> buffer

    バッファーへのポインター

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 指定されたバインダーとファイルIDで、データの読み込みを開始します。 ファイル内の offset バイト目から、load_size バイト分読み込みます。 本関数は即時復帰関数です。 ロードの完了状態を取得するには GetStatus(out Status)関数を使用してください。

    See Also
    GetStatus(out Status)

    LoadWithoutDecompression(CriFsBinder, ArgString, long, long, Span<byte>)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error LoadWithoutDecompression(CriFsBinder binder, ArgString path, long offset, long loadSize, Span<byte> buffer)
    CriError CRIAPI criFsLoader_LoadWithoutDecompression(CriFsLoaderHn loader, CriFsBinderHn binder, const CriChar8 *path, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
    Parameters
    Type Name Description
    CriFsBinder binder

    CriFsBinderハンドル

    ArgString path

    ファイルパス名

    long offset

    ファイルの先頭からのオフセット位置

    long loadSize

    ロードサイズ

    Span<byte> buffer

    バッファーへのポインター

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 指定されたバインダーとファイル名で、データの読み込みを開始します。 Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数と異なり、データが圧縮されている場合でも、 データを展開せずにメモリ上にロードします。 本関数は即時復帰関数です。 ロードの完了状態を取得するには GetStatus(out Status)関数を使用してください。

    See Also
    GetStatus(out Status)

    LoadWithoutDecompressionById(CriFsBinder, int, long, long, Span<byte>)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error LoadWithoutDecompressionById(CriFsBinder binder, int id, long offset, long loadSize, Span<byte> buffer)
    CriError CRIAPI criFsLoader_LoadWithoutDecompressionById(CriFsLoaderHn loader, CriFsBinderHn binder, CriFsFileId id, CriSint64 offset, CriSint64 load_size, void *buffer, CriSint64 buffer_size)
    Parameters
    Type Name Description
    CriFsBinder binder

    CriFsBinderハンドル

    int id

    ファイルID

    long offset

    ファイルの先頭からのオフセット位置

    long loadSize

    ロードサイズ

    Span<byte> buffer

    バッファーへのポインター

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: 指定されたバインダーとファイルIDで、データの読み込みを開始します。 Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数と異なり、データが圧縮されている場合でも、 データを展開せずにメモリ上にロードします。 本関数は即時復帰関数です。 ロードの完了状態を取得するには GetStatus(out Status)関数を使用してください。

    See Also
    GetStatus(out Status)

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

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error SetLoadEndCallback(delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> func, IntPtr obj)
    CriError CRIAPI criFsLoader_SetLoadEndCallback(CriFsLoaderHn loader, CriFsLoaderLoadEndCbFunc func, void *obj)
    Parameters
    Type Name Description
    delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> func

    コールバック関数

    IntPtr obj

    コールバック関数へ渡す引数

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ロード完了時に実行されるコールバック関数を登録します。 ロード完了コールバックは、ローダーのステータスが Loading から 他のステータスに遷移した直後に呼び出されます。 ( Complete 以外にも、 Stop や Error に遷移する際にもコールバックは実行されます。)

    備考: 厳密には、ステータス遷移~コールバック実行までの間に他の処理が割り込みで動作する 余地があるため、ステータス遷移とコールバック実行のタイミングがズレる可能性があります。

    注意: ロード完了コールバックは、 Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数が Ok を返す場合にのみ呼び出されます。 Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数に不正な引数を渡した場合等、 ロード処理自体が開始されない場合(ローダーのステータスが Loading にならない場合)には、ロード完了コールバック自体が実行されません。 ロード処理やロード完了コールバックの呼び出しは、 Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数を実行したスレッドとは別のスレッドで実行される可能性があります。 ほとんどの場合、他スレッドでのファイル読み込みが完了する前に Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数から処理は復帰しますが、 何らしかの理由で Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数を実行するスレッドの動作が遅れた(または別スレッドでの処理が瞬時に完了した)場合、 Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数から復帰する前にロード完了コールバックが呼び出される形になります。 ロード完了後に呼び出されるロード完了コールバック関数は、 『ロード開始時点で登録済みのコールバック関数』です。 そのため、ロード処理開始~ロード完了までの間にロード完了コールバックを登録し直したとしても、 呼び出される関数は変更されません。 (登録し直したロード完了コールバック関数が使用されるのは、次回ロード処理実行時となります。) ロード完了コールバック内で参照されるオブジェクトは、 ローダーのステータスが完了状態(または停止状態)になった場合でも、 ロード完了コールバックが実行されるまでは解放しないでください。 (ステータス遷移後、ロード完了コールバックが実行されるまでは、 登録済みのコールバックパラメータが参照される可能性があります。) コールバックを登録した状態でロード処理を行っているローダーを Dispose() 関数で破棄した場合、 Dispose() 関数内でロード完了コールバックが実行される可能性があります。 ロード完了コールバックを実行している間、他のファイルのロードがブロックされます。 そのため、ロード完了コールバック内で負荷の高い処理を行なわないよう、ご注意ください。 ロード完了コールバック内でローダーのステータス遷移を待つ処理を行わないでください。 ローダーのステータス更新は、ロード完了コールバックと同一のスレッド上で行われます。 そのため、ロード完了コールバック内でステータス遷移を待つ処理を行うと、 デッドロックが発生し、処理が進まなくなります。 コールバック関数はローダー内のメモリ領域に対して登録されます。 そのため、ロード完了コールバック内でローダーを破棄することはできません。 (ロード完了コールバック内で Dispose() 関数を実行すると、 エラーが発生します。) コールバック関数は1つしか登録できません。 登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。 funcにnullを指定するとことで登録済み関数の登録解除が行えます。

    See Also
    Dispose()

    SetLoadLimiter(LoadLimiterNo)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error SetLoadLimiter(CriFs.LoadLimiterNo limiterNo)
    CriError CRIAPI criFsLoader_SetLoadLimiter(CriFsLoaderHn loader, CriFsLoadLimiterNo limiter_no)
    Parameters
    Type Name Description
    CriFs.LoadLimiterNo limiterNo

    ロードリミッタ番号

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: CriFsLoaderオブジェクトにロードリミッタ番号を割り当てます。 共通のリミッタ番号を割り当てた全てのローダー、グループローダー、バッチローダーの合計読み込みサイズが制限されます。

    注意: ゲーム機向けではロードリミッタ機能は非サポートです。この関数は呼び出さないでください。

    See Also
    CriFs.LoadLimiterNo
    SetLoadLimiterSize(LoadLimiterNo, int)
    SetLoadLimiterUnit(LoadLimiterNo, int)
    SetLoadLimiter(LoadLimiterNo)
    SetLoadLimiter(LoadLimiterNo)

    SetPriority(Priority)

    Pro

    プライオリティの設定

    Declaration
    • C#
    • C
    public CriErr.Error SetPriority(CriFsLoader.Priority prio)
    CriError CRIAPI criFsLoader_SetPriority(CriFsLoaderHn loader, CriFsLoaderPriority prio)
    Parameters
    Type Name Description
    CriFsLoader.Priority prio

    読み込みプライオリティ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: データロードのプライオリティを設定します。 複数のローダーに対し、同時に Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数でロードを実行した場合、 プライオリティの高いローダーが先に読み込みを行います。 また、既に低プライオリティのローダーが巨大なデータを読み込んでいる最中でも、 後から高プライオリティのローダーの読み込みを開始すれば、低プライオリティのローダーの処理に割り込んで、 高プライオリティのローダーの読み込みが先に実行されます。

    備考: 複数のローダーが全て同一プライオリティであった場合、 データの読み込みは Load(CriFsBinder, ArgString, long, long, Span<byte>) 関数を実行した順に処理されます。

    注意: ファイルの読み込みが行なわれていない状態でロードを開始した場合、 プライオリティに関係なく、そのロード処理が即座に開始されます。 そのため、ファイルの読み込みが行なわれていない状態で低プライオリティローダーの読み込みを行なった場合、 直後に高プライオリティのローダーで読み込みを開始したとしても、 低プライオリティローダーの読み込みがある程度行なわれることになります。 (単位読み込みサイズ分のデータを処理するまでは、他のローダーに処理がスイッチすることはありません。)

    See Also
    GetPriority(out Priority)
    Load(CriFsBinder, ArgString, long, long, Span<byte>)
    SetReadUnitSize(long)

    SetReadUnitSize(long)

    Pro

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

    Declaration
    • C#
    • C
    public CriErr.Error SetReadUnitSize(long unitSize)
    CriError CRIAPI criFsLoader_SetReadUnitSize(CriFsLoaderHn loader, CriSint64 unit_size)
    Parameters
    Type Name Description
    long unitSize

    単位読み込みサイズ

    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

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

    Stop()

    Pro

    ロードの停止

    Declaration
    • C#
    • C
    public CriErr.Error Stop()
    CriError CRIAPI criFsLoader_Stop(CriFsLoaderHn loader)
    Returns
    Type Description
    CriErr.Error

    CriErr.Error エラーコード

    Remarks

    説明: ロードを停止します。 本関数は即時復帰関数です。停止状態を取得するには GetStatus(out Status) 関数を使用してください。

    注意: 本関数を実行しても、ローダーのステータスが Stop に変わるまでは、バッファーへのデータ転送が続いている可能性があります。 ステータスが更新されるまでは、データロード先のバッファーを解放しないでください。

    See Also
    GetStatus(out Status)

    Implements

    IDisposable
    In this article
    Back to top Generated by DocFX