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 +++++++++++++++++++++++++++++++++++++++++ src/burn/stub/stub.cpp | 43 ------------------------------------------- 2 files changed, 41 insertions(+), 43 deletions(-) (limited to 'src') 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(); + } +} diff --git a/src/burn/stub/stub.cpp b/src/burn/stub/stub.cpp index 090a8dbb..339a54da 100644 --- a/src/burn/stub/stub.cpp +++ b/src/burn/stub/stub.cpp @@ -3,16 +3,6 @@ #include "precomp.h" -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 - ); - int WINAPI wWinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE /* hPrevInstance */, @@ -40,8 +30,6 @@ int WINAPI wWinMain( L"feclient.dll", // unsafely loaded by DecryptFile(). }; - DutilInitialize(&BurnTraceError); - // Best effort attempt to get our file handle as soon as possible. hr = PathForCurrentProcess(&sczPath, NULL); if (SUCCEEDED(hr)) @@ -72,37 +60,6 @@ LExit: ReleaseFileHandle(hEngineFile); ReleaseStr(sczPath); - DutilUninitialize(); return FAILED(hr) ? (int)hr : (int)dwExitCode; } - -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