static void lazyRegisterEventProvider()

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);
            }
        }
    }
}