アーカイブファイル中の指定のファイルを、クラス内のバッファに読み込む
| 3977 | |
| 3978 | // アーカイブファイル中の指定のファイルを、クラス内のバッファに読み込む |
| 3979 | void *DXArchive::LoadFileToCache(const TCHAR *FilePath) |
| 3980 | { |
| 3981 | s64 FileSize; |
| 3982 | |
| 3983 | // ファイルサイズを取得する |
| 3984 | FileSize = this->GetFileSize(FilePath); |
| 3985 | |
| 3986 | // ファイルが無かったらエラー |
| 3987 | if (FileSize < 0) return NULL; |
| 3988 | |
| 3989 | // 確保しているキャッシュバッファのサイズよりも大きい場合はバッファを再確保する |
| 3990 | if (FileSize > (s64)this->CacheBufferSize) |
| 3991 | { |
| 3992 | // キャッシュバッファのクリア |
| 3993 | this->ClearCache(); |
| 3994 | |
| 3995 | // キャッシュバッファの再確保 |
| 3996 | this->CacheBuffer = malloc((size_t)FileSize); |
| 3997 | |
| 3998 | // 確保に失敗した場合は NULL を返す |
| 3999 | if (this->CacheBuffer == NULL) return NULL; |
| 4000 | |
| 4001 | // キャッシュバッファのサイズを保存 |
| 4002 | this->CacheBufferSize = FileSize; |
| 4003 | } |
| 4004 | |
| 4005 | // ファイルをメモリに読み込む |
| 4006 | this->LoadFileToMem(FilePath, this->CacheBuffer, FileSize); |
| 4007 | |
| 4008 | // キャッシュバッファのアドレスを返す |
| 4009 | return this->CacheBuffer; |
| 4010 | } |
| 4011 | |
| 4012 | // キャッシュバッファを開放する |
| 4013 | int DXArchive::ClearCache(void) |
nothing calls this directly
no test coverage detected