From 4f41db7eaa48b0e061a68fd5fc70ce6d127d9039 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 24 Jun 2022 12:26:02 -0500 Subject: Burn can only log errors while logutil is initialized and not closed. --- src/burn/engine/engine.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/burn/engine/engine.cpp') diff --git a/src/burn/engine/engine.cpp b/src/burn/engine/engine.cpp index aca43438..7fca1141 100644 --- a/src/burn/engine/engine.cpp +++ b/src/burn/engine/engine.cpp @@ -50,6 +50,15 @@ static HRESULT DAPI RedirectLoggingOverPipe( __in_opt LPVOID pvContext ); static HRESULT Restart(); +static void CALLBACK BurnTraceError( + __in_z LPCSTR szFile, + __in int iLine, + __in REPORT_LEVEL rl, + __in UINT source, + __in HRESULT hrError, + __in_z __format_string LPCSTR szFormat, + __in va_list args + ); // function definitions @@ -105,6 +114,7 @@ extern "C" HRESULT EngineRun( // Always initialize logging first LogInitialize(::GetModuleHandleW(NULL)); + DutilInitialize(&BurnTraceError); fLogInitialized = TRUE; // Ensure that log contains approriate level of information @@ -313,6 +323,7 @@ LExit: if (fLogInitialized) { + DutilUninitialize(); LogClose(FALSE); } @@ -969,3 +980,33 @@ LExit: ReleaseHandle(hProcessToken); return hr; } + +static void CALLBACK BurnTraceError( + __in_z LPCSTR /*szFile*/, + __in int /*iLine*/, + __in REPORT_LEVEL /*rl*/, + __in UINT source, + __in HRESULT hrError, + __in_z __format_string LPCSTR szFormat, + __in va_list args + ) +{ + BOOL fLog = FALSE; + + switch (source) + { + case DUTIL_SOURCE_DEFAULT: + fLog = TRUE; + break; + default: + fLog = REPORT_VERBOSE < LogGetLevel(); + break; + } + + if (fLog) + { + DutilSuppressTraceErrorSource(); + LogErrorStringArgs(hrError, szFormat, args); + DutilUnsuppressTraceErrorSource(); + } +} -- cgit v1.2.3-55-g6feb