ctr_Repair/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.h
N2614 a032646cb4 ヒープチェックを行ってOKになったサイズまでのヒープを使うように
VersionDetectでヒープを使わないように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@525 385bec56-5757-e545-9c3a-d8741f4650f1
2011-11-25 01:54:00 +00:00

72 lines
2.4 KiB
C++

/*---------------------------------------------------------------------------*
Project: Horizon
File: HeapChecker.h
Copyright 2009-2011 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Rev$
*---------------------------------------------------------------------------*/
#ifndef HEAPCHECKER_H_
#define HEAPCHECKER_H_
#include <string>
#include <nn.h>
namespace ConsoleBackup
{
nn::Result CheckHeap(std::wstring saveRoot, void* buf, size_t& bufSize);
size_t GetCheckedHeapSize();
//! @brief チェックするヒープサイズの下限です。
const size_t HEAP_SIZE_MIN = 512 * 1024;
//! @brief チェックに使うファイルへのパスです。
const wchar_t* const HEAP_CHECKER_FILE = L"sdmc:/CTR_Console_Repair/Check";
class HeapChecker
{
public:
HeapChecker();
virtual ~HeapChecker();
/*!
@brief 与えられたバッファを使ってNANDから読み出したデータをSDカードに書き出し、データが正しく書き込めているか
チェックします。データが正しく書き込めていない場合、バッファサイズを半分にして繰り返しチェックします。
正しくデータを書き込めた時のbufSizeが設定されます。
@param[in] saveRoot NANDセーブデータのルートディレクトリのパス
@param[in] buf バッファ
@param[inout] buSize バッファサイズ
@return ResultOutofMemory データが正しく書き込めるバッファが存在しない場合に返されます。
@return ResultSuccess 上記以外
*/
nn::Result Check(std::wstring saveRoot, void* buf, size_t& bufSize);
/*!
@brief チェック済みのサイズを返す
@return Check関数 によってチェックされたサイズ。Check関数が呼び出されていない場合は0
*/
size_t GetCheckedSize();
private:
size_t m_CheckedSize;
NN_PADDING3;
bool m_IsAlreadyChecked;
};
} /* namespace ConsoleBackup */
#endif /* HEAPCHECKER_H_ */