summaryrefslogtreecommitdiff
path: root/src/burn/engine/engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/engine.cpp')
-rw-r--r--src/burn/engine/engine.cpp41
1 files changed, 41 insertions, 0 deletions
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(
50 __in_opt LPVOID pvContext 50 __in_opt LPVOID pvContext
51 ); 51 );
52static HRESULT Restart(); 52static HRESULT Restart();
53static void CALLBACK BurnTraceError(
54 __in_z LPCSTR szFile,
55 __in int iLine,
56 __in REPORT_LEVEL rl,
57 __in UINT source,
58 __in HRESULT hrError,
59 __in_z __format_string LPCSTR szFormat,
60 __in va_list args
61 );
53 62
54 63
55// function definitions 64// function definitions
@@ -105,6 +114,7 @@ extern "C" HRESULT EngineRun(
105 114
106 // Always initialize logging first 115 // Always initialize logging first
107 LogInitialize(::GetModuleHandleW(NULL)); 116 LogInitialize(::GetModuleHandleW(NULL));
117 DutilInitialize(&BurnTraceError);
108 fLogInitialized = TRUE; 118 fLogInitialized = TRUE;
109 119
110 // Ensure that log contains approriate level of information 120 // Ensure that log contains approriate level of information
@@ -313,6 +323,7 @@ LExit:
313 323
314 if (fLogInitialized) 324 if (fLogInitialized)
315 { 325 {
326 DutilUninitialize();
316 LogClose(FALSE); 327 LogClose(FALSE);
317 } 328 }
318 329
@@ -969,3 +980,33 @@ LExit:
969 ReleaseHandle(hProcessToken); 980 ReleaseHandle(hProcessToken);
970 return hr; 981 return hr;
971} 982}
983
984static void CALLBACK BurnTraceError(
985 __in_z LPCSTR /*szFile*/,
986 __in int /*iLine*/,
987 __in REPORT_LEVEL /*rl*/,
988 __in UINT source,
989 __in HRESULT hrError,
990 __in_z __format_string LPCSTR szFormat,
991 __in va_list args
992 )
993{
994 BOOL fLog = FALSE;
995
996 switch (source)
997 {
998 case DUTIL_SOURCE_DEFAULT:
999 fLog = TRUE;
1000 break;
1001 default:
1002 fLog = REPORT_VERBOSE < LogGetLevel();
1003 break;
1004 }
1005
1006 if (fLog)
1007 {
1008 DutilSuppressTraceErrorSource();
1009 LogErrorStringArgs(hrError, szFormat, args);
1010 DutilUnsuppressTraceErrorSource();
1011 }
1012}