cecdのシステムセーブデータを読み取ってSDに書き込むように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@522 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2011-11-24 01:14:37 +00:00
parent 92cc6658c2
commit 814a2a199b
3 changed files with 23 additions and 7 deletions

View File

@ -758,7 +758,7 @@ nn::Result WriteMcuRtcData(common::HardwareStateManager& manager)
return nn::ResultSuccess();
}
void ExportThreadFunc()
void ExportThreadFunc(std::wstring saveRoot)
{
nn::Result result;
s_IsExportSucceeded = true;
@ -781,7 +781,7 @@ void ExportThreadFunc()
{
NN_LOG("HeapCheck Start : %lld\n", nn::os::Tick::GetSystemCurrent().ToTimeSpan().GetMilliSeconds());
HeapChecker heapChecker;
result = heapChecker.Check(buf, bufSize);
result = heapChecker.Check(saveRoot, buf, bufSize);
if(result.IsFailure())
{
s_IsExportSucceeded = false;
@ -861,7 +861,11 @@ nn::Result WriteSaveData(::std::string& sysSaveRoot)
COMMON_LOGGER("Export NAND Data Start...\n");
// SDにコピーするためのスレッドの作成
s_ExportThread.Start(ExportThreadFunc, s_ExportThreadStack);
s_ExportThread.Start(
ExportThreadFunc,
::std::wstring(common::NAND_DATA_ROOT_PATHNAME_WITH_SLASH) + ::std::wstring(s_RootName)
+ ::std::wstring(L"/"), s_ExportThreadStack
);
return result;
}

View File

@ -1,4 +1,4 @@
/*---------------------------------------------------------------------------*
/*---------------------------------------------------------------------------*
Project: Horizon
File: HeapChecker.cpp
@ -33,7 +33,7 @@ HeapChecker::~HeapChecker()
// TODO Auto-generated destructor stub
}
nn::Result HeapChecker::Check(void* buf, size_t& bufSize)
nn::Result HeapChecker::Check(std::wstring saveRoot, void* buf, size_t& bufSize)
{
nn::Result result;
common::SdReaderWriter sdReaderWriter;
@ -47,6 +47,15 @@ nn::Result HeapChecker::Check(void* buf, size_t& bufSize)
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
}
// NANDから読み込む
nn::fs::FileInputStream file;
result = file.TryInitialize(std::wstring(saveRoot + std::wstring(L"sysdata/00010026/00000000")).c_str());
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
s32 readSize;
result = file.TryRead(&readSize, buf, bufSize);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = sdReaderWriter.WriteBufWithCmac(HEAP_CHECKER_FILE, buf, bufSize - nn::crypto::SwAesCtrContext::AES_BLOCK_LENGTH);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);

View File

@ -1,4 +1,4 @@
/*---------------------------------------------------------------------------*
/*---------------------------------------------------------------------------*
Project: Horizon
File: HeapChecker.h
@ -16,6 +16,8 @@
#ifndef HEAPCHECKER_H_
#define HEAPCHECKER_H_
#include <string>
#include <nn.h>
namespace ConsoleBackup
@ -38,6 +40,7 @@ public:
bufSizeが設定されます
@param[in] saveRoot NANDセーブデータのルートディレクトリのパス
@param[in] buf
@param[inout] buSize
@ -45,7 +48,7 @@ public:
@return ResultSuccess
*/
nn::Result Check(void* buf, size_t& bufSize);
nn::Result Check(std::wstring saveRoot, void* buf, size_t& bufSize);
};
} /* namespace ConsoleBackup */