in src/etwlogger_driver.c [29:51]
static void lazyRegisterEventProvider(void)
{
/*lazily init the logger*/
LONG state;
while ((state=InterlockedCompareExchange(&isETWLoggerRegistered, 1, 0)) != 2) /*0 - not init, 1 - initializing, 2 - initialized*/
{
if (state == 0)
{
/* register the provider*/
TLG_STATUS t = TraceLoggingRegister(g_hMyComponentProvider);
if (SUCCEEDED(t))
{
(void)InterlockedExchange(&isETWLoggerRegistered, 2);
LogInfo("block_storage_2 ETW provider was registered succesfully (self test). Executable file full path name = %s", MU_P_OR_NULL(_pgmptr)); /*_pgmptr comes from https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-GetModuleFileNameA */
}
else
{
(void)printf("block_storage_2 ETW provider was NOT registered.");
(void)InterlockedExchange(&isETWLoggerRegistered, 0);
}
}
}
}