diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp index 3a96ed5..2ab8b9c 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp @@ -122,6 +122,9 @@ nn::Result ActCompleter::ExecImpl() // アンマウントできたのでアカウントサルベージを実行 nn::Result result = nn::act::SalvageAccounts(); + // サルベージ終了をシステムに通知 + s_EndEvent.Signal(); + if(result.IsFailure()) { if(nn::act::ResultRequestNotFound().Includes(result) && s_SalvageCheck == ACT_SALVAGE_WITHOUT_CHECK) @@ -130,7 +133,6 @@ nn::Result ActCompleter::ExecImpl() } else { - s_EndEvent.Signal(); NN_UTIL_RETURN_IF_FAILED_1( nn::act::FinalizeAdmin(), common::FinalizeNetwork()); @@ -141,52 +143,52 @@ nn::Result ActCompleter::ExecImpl() return result; } } - - // サルベージ終了をシステムに通知 - s_EndEvent.Signal(); - - // COPPA判定とPIN判定の準備 - nn::cfg::CfgRegionCode region = nn::cfg::GetRegion(); - u8 age = nn::act::GetAgeAtSalvage(); - nn::cfg::CfgCountryCode country; - - NN_UTIL_RETURN_IF_FAILED_2( - nn::act::GetCountryCodeAtSalvage(reinterpret_cast(&country)), - nn::act::FinalizeAdmin(), - common::FinalizeNetwork()); - - AgeChecker ageChecker; - - if(region == nn::cfg::CFG_REGION_AMERICA) + else { + // COPPA判定とPIN判定の準備 + nn::cfg::CfgRegionCode region = nn::cfg::GetRegion(); + u8 age = nn::act::GetAgeAtSalvage(); + nn::cfg::CfgCountryCode country; - if(ageChecker.IsCoppaRequired(age, region, country)) + NN_UTIL_RETURN_IF_FAILED_2( + nn::act::GetCountryCodeAtSalvage(reinterpret_cast(&country)), + nn::act::FinalizeAdmin(), + common::FinalizeNetwork()); + + AgeChecker ageChecker; + + if (region == nn::cfg::CFG_REGION_AMERICA) + { + + if (ageChecker.IsCoppaRequired(age, region, country)) + { + // COPPA対象の年齢なら復元する + s_ApprovalId = nn::act::GetSalvagedApprovalId(); + NN_UTIL_RETURN_IF_FAILED_2( + SaveApprovalId(), + nn::act::FinalizeAdmin(), + common::FinalizeNetwork()); + } + } + + // PIN必須ならフラグを立てる + if (ageChecker.IsPinRestrictionRequired(age, region, country)) { - // COPPA対象の年齢なら復元する - s_ApprovalId = nn::act::GetSalvagedApprovalId(); NN_UTIL_RETURN_IF_FAILED_2( - SaveApprovalId(), + nn::cfg::CTR::system::SetForceParentalControlFlag(true), + nn::act::FinalizeAdmin(), + common::FinalizeNetwork()); + + NN_UTIL_RETURN_IF_FAILED_2( + nn::cfg::CTR::system::FlushConfig(), nn::act::FinalizeAdmin(), common::FinalizeNetwork()); } } - - // PIN必須ならフラグを立てる - if(ageChecker.IsPinRestrictionRequired(age, region, country)) - { - NN_UTIL_RETURN_IF_FAILED_2( - nn::cfg::CTR::system::SetForceParentalControlFlag(true), - nn::act::FinalizeAdmin(), - common::FinalizeNetwork()); - - NN_UTIL_RETURN_IF_FAILED_2( - nn::cfg::CTR::system::FlushConfig(), - nn::act::FinalizeAdmin(), - common::FinalizeNetwork()); - } } // 移行完了 + // サルベージの有無に関わらず呼び出す NN_UTIL_RETURN_IF_FAILED_2( nn::act::CompleteTransfer(), nn::act::FinalizeAdmin(),