aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine')
-rw-r--r--src/burn/engine/engine.cpp2
-rw-r--r--src/burn/engine/exeengine.cpp28
-rw-r--r--src/burn/engine/logging.cpp4
-rw-r--r--src/burn/engine/package.h2
4 files changed, 35 insertions, 1 deletions
diff --git a/src/burn/engine/engine.cpp b/src/burn/engine/engine.cpp
index daaf51dc..aefba98b 100644
--- a/src/burn/engine/engine.cpp
+++ b/src/burn/engine/engine.cpp
@@ -294,7 +294,7 @@ LExit:
294 LogId(REPORT_STANDARD, MSG_RESTART_ABORTED, LoggingRelationTypeToString(engineState.command.relationType)); 294 LogId(REPORT_STANDARD, MSG_RESTART_ABORTED, LoggingRelationTypeToString(engineState.command.relationType));
295 295
296 fRestart = FALSE; 296 fRestart = FALSE;
297 hr = HRESULT_FROM_WIN32(ERROR_SUCCESS_REBOOT_REQUIRED); 297 hr = SUCCEEDED(hr) ? HRESULT_FROM_WIN32(ERROR_SUCCESS_REBOOT_REQUIRED) : HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED);
298 } 298 }
299 299
300 UninitializeEngineState(&engineState); 300 UninitializeEngineState(&engineState);
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(
992 { 992 {
993 typeCode = BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT; 993 typeCode = BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT;
994 } 994 }
995 else if (ERROR_FAIL_REBOOT_REQUIRED == dwExitCode ||
996 HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED) == static_cast<HRESULT>(dwExitCode))
997 {
998 typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR_SCHEDULE_REBOOT;
999 }
1000 else if (ERROR_FAIL_REBOOT_INITIATED == dwExitCode ||
1001 HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_INITIATED) == static_cast<HRESULT>(dwExitCode))
1002 {
1003 typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR_FORCE_REBOOT;
1004 }
995 else 1005 else
996 { 1006 {
997 typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR; 1007 typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR;
@@ -1024,6 +1034,24 @@ extern "C" HRESULT ExeEngineHandleExitCode(
1024 hr = S_OK; 1034 hr = S_OK;
1025 break; 1035 break;
1026 1036
1037 case BURN_EXE_EXIT_CODE_TYPE_ERROR_SCHEDULE_REBOOT:
1038 *pRestart = BOOTSTRAPPER_APPLY_RESTART_REQUIRED;
1039 hr = HRESULT_FROM_WIN32(dwExitCode);
1040 if (SUCCEEDED(hr))
1041 {
1042 hr = HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED);
1043 }
1044 break;
1045
1046 case BURN_EXE_EXIT_CODE_TYPE_ERROR_FORCE_REBOOT:
1047 *pRestart = BOOTSTRAPPER_APPLY_RESTART_INITIATED;
1048 hr = HRESULT_FROM_WIN32(dwExitCode);
1049 if (SUCCEEDED(hr))
1050 {
1051 hr = HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_INITIATED);
1052 }
1053 break;
1054
1027 default: 1055 default:
1028 hr = E_UNEXPECTED; 1056 hr = E_UNEXPECTED;
1029 break; 1057 break;
diff --git a/src/burn/engine/logging.cpp b/src/burn/engine/logging.cpp
index 38c9d2d5..a16e82b0 100644
--- a/src/burn/engine/logging.cpp
+++ b/src/burn/engine/logging.cpp
@@ -545,6 +545,10 @@ extern "C" LPCSTR LoggingExitCodeTypeToString(
545 return "ScheduleReboot"; 545 return "ScheduleReboot";
546 case BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT: 546 case BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT:
547 return "ForceReboot"; 547 return "ForceReboot";
548 case BURN_EXE_EXIT_CODE_TYPE_ERROR_SCHEDULE_REBOOT:
549 return "ErrorScheduleReboot";
550 case BURN_EXE_EXIT_CODE_TYPE_ERROR_FORCE_REBOOT:
551 return "ErrorForceReboot";
548 default: 552 default:
549 return "Invalid"; 553 return "Invalid";
550 } 554 }
diff --git a/src/burn/engine/package.h b/src/burn/engine/package.h
index e45c775d..bdebd5b6 100644
--- a/src/burn/engine/package.h
+++ b/src/burn/engine/package.h
@@ -37,6 +37,8 @@ enum BURN_EXE_EXIT_CODE_TYPE
37 BURN_EXE_EXIT_CODE_TYPE_ERROR, 37 BURN_EXE_EXIT_CODE_TYPE_ERROR,
38 BURN_EXE_EXIT_CODE_TYPE_SCHEDULE_REBOOT, 38 BURN_EXE_EXIT_CODE_TYPE_SCHEDULE_REBOOT,
39 BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT, 39 BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT,
40 BURN_EXE_EXIT_CODE_TYPE_ERROR_SCHEDULE_REBOOT,
41 BURN_EXE_EXIT_CODE_TYPE_ERROR_FORCE_REBOOT,
40}; 42};
41 43
42enum BURN_EXE_PROTOCOL_TYPE 44enum BURN_EXE_PROTOCOL_TYPE