diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp index ce88757..fc5bfb4 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp @@ -38,13 +38,10 @@ ActCompleter::CompleteMode ActCompleter::s_Mode; ActCompleter::ActCompleter() { - // TODO 自動生成されたコンストラクター・スタブ - } ActCompleter::~ActCompleter() { - // TODO Auto-generated destructor stub } nn::Result ActCompleter::GetResult() @@ -55,6 +52,7 @@ nn::Result ActCompleter::GetResult() void ActCompleter::Start(CompleteMode mode) { s_Mode = mode; + s_ApprovalId = 0; if(s_Mode == ACT_COMPLETE_TRANSFER_WITH_SALVEGE) { s_BeginEvent.Initialize(false); @@ -116,12 +114,24 @@ nn::Result ActCompleter::ExecImpl() s_BeginEvent.Wait(); // アンマウントできたのでアカウントサルベージを実行 - NN_UTIL_RETURN_IF_FAILED_3( - nn::act::SalvageAccounts(), - s_EndEvent.Signal(), - nn::act::FinalizeAdmin(), - common::FinalizeNetwork() - ); + nn::Result result = nn::act::SalvageAccounts(); + if(result.IsFailure()) + { + if(nn::act::ResultRequestNotFound().Includes(result)) + { + //NNAが無い場合に起こるので無視 + } + else + { + s_EndEvent.Signal(); + NN_UTIL_RETURN_IF_FAILED_1( + nn::act::FinalizeAdmin(), + common::FinalizeNetwork()); + + NN_UTIL_RETURN_IF_FAILED( + common::FinalizeNetwork()); + } + } s_ApprovalId = nn::act::GetSalvagedApprovalId(); COMMON_LOGGER("ApprovalId = %d\n", s_ApprovalId); @@ -138,8 +148,7 @@ nn::Result ActCompleter::ExecImpl() NN_UTIL_RETURN_IF_FAILED_1( nn::act::FinalizeAdmin(), - common::FinalizeNetwork() - ); + common::FinalizeNetwork()); NN_UTIL_RETURN_IF_FAILED( common::FinalizeNetwork());