MI_SecureUncompressRL

構文

#include <nitro/mi.h>

s32 MI_SecureUncompressRL( const void *srcp, u32 srcSize, void *destp, u32 dstSize );

引数

srcp ランレングス圧縮データが格納されているソースアドレス
srcSize ソースデータサイズ
destp 展開するディスティネーションアドレス
dstSize 展開するディスティネーションサイズ

返り値

MI_ERR_SUCCESS 正常終了
MI_ERR_UNSUPPORTED 対応していない圧縮データタイプ
MI_ERR_SRC_SHORTAGE ソースデータサイズが過小
MI_ERR_SRC_REMAINDER ソースデータサイズが過大
MI_ERR_DEST_OVERRUN 展開先のバッファを超過してしまう(バッファオーバーラン)

説明

ランレングス圧縮データを展開し、指定のメモリ領域に書き込みます。
ソースアドレスは4byte境界に合わせてください。

データのストリーミング展開をおこなう場合には、MI_ReadUncompRL()を利用します。

展開先のバッファサイズを確保する際の参考として、MI_GetUncompressedSize()を呼ぶことで、
圧縮データのヘッダに書かれている展開後のデータサイズを取得することができます。
圧縮データのヘッダが壊れており、正しい値が取得できなかった場合でも、各SecureUncompress*()の中で検知しエラーを返します。

参照

MI_GetUncompressedSize, MI_UncompressRL, MI_InitUncompContextRL, MI_ReadUncompRL, MI_CompressRL, ntrcomp

履歴

2008/05/22 初版