From 4f5de06073ad664f60ac775da5de8c0fa1de4923 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 25 Aug 2022 15:08:34 -0500 Subject: Process and return the failed version of reboot exit codes in Burn. (ERROR_FAIL_REBOOT_REQUIRED and ERROR_FAIL_REBOOT_INITIATED) Fixes 6762 --- src/burn/engine/exeengine.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/burn/engine/exeengine.cpp') diff --git a/src/burn/engine/exeengine.cpp b/src/burn/engine/exeengine.cpp index 3cb9c72a..6d326a5a 100644 --- a/src/burn/engine/exeengine.cpp +++ b/src/burn/engine/exeengine.cpp @@ -992,6 +992,16 @@ extern "C" HRESULT ExeEngineHandleExitCode( { typeCode = BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT; } + else if (ERROR_FAIL_REBOOT_REQUIRED == dwExitCode || + HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED) == static_cast(dwExitCode)) + { + typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR_SCHEDULE_REBOOT; + } + else if (ERROR_FAIL_REBOOT_INITIATED == dwExitCode || + HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_INITIATED) == static_cast(dwExitCode)) + { + typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR_FORCE_REBOOT; + } else { typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR; @@ -1024,6 +1034,24 @@ extern "C" HRESULT ExeEngineHandleExitCode( hr = S_OK; break; + case BURN_EXE_EXIT_CODE_TYPE_ERROR_SCHEDULE_REBOOT: + *pRestart = BOOTSTRAPPER_APPLY_RESTART_REQUIRED; + hr = HRESULT_FROM_WIN32(dwExitCode); + if (SUCCEEDED(hr)) + { + hr = HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED); + } + break; + + case BURN_EXE_EXIT_CODE_TYPE_ERROR_FORCE_REBOOT: + *pRestart = BOOTSTRAPPER_APPLY_RESTART_INITIATED; + hr = HRESULT_FROM_WIN32(dwExitCode); + if (SUCCEEDED(hr)) + { + hr = HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_INITIATED); + } + break; + default: hr = E_UNEXPECTED; break; -- cgit v1.2.3-55-g6feb