mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
fixed PH_SYMBOL_PROVIDER_DELAY_INIT
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3538 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
@@ -1802,6 +1802,7 @@ typedef struct _PH_SYMBOL_PROVIDER
|
||||
PH_QUEUED_LOCK ModulesListLock;
|
||||
HANDLE ProcessHandle;
|
||||
BOOLEAN IsRealHandle;
|
||||
BOOLEAN IsRegistered;
|
||||
#ifdef PH_SYMBOL_PROVIDER_DELAY_INIT
|
||||
PH_INITONCE InitOnce;
|
||||
#endif
|
||||
|
||||
@@ -604,6 +604,13 @@ FORCEINLINE BOOLEAN PhBeginInitOnce(
|
||||
return PhfBeginInitOnce(InitOnce);
|
||||
}
|
||||
|
||||
FORCEINLINE BOOLEAN PhTestInitOnce(
|
||||
__in PPH_INITONCE InitOnce
|
||||
)
|
||||
{
|
||||
return InitOnce->State == PH_INITONCE_INITIALIZED;
|
||||
}
|
||||
|
||||
// string
|
||||
|
||||
#ifndef BASESUP_PRIVATE
|
||||
|
||||
@@ -198,6 +198,8 @@ PPH_SYMBOL_PROVIDER PhCreateSymbolProvider(
|
||||
symbolProvider->ProcessHandle = fakeHandle;
|
||||
}
|
||||
|
||||
symbolProvider->IsRegistered = FALSE;
|
||||
|
||||
#ifdef PH_SYMBOL_PROVIDER_DELAY_INIT
|
||||
PhInitializeInitOnce(&symbolProvider->InitOnce);
|
||||
#else
|
||||
@@ -218,7 +220,10 @@ VOID NTAPI PhpSymbolProviderDeleteProcedure(
|
||||
if (SymCleanup_I)
|
||||
{
|
||||
PH_LOCK_SYMBOLS();
|
||||
SymCleanup_I(symbolProvider->ProcessHandle);
|
||||
|
||||
if (symbolProvider->IsRegistered)
|
||||
SymCleanup_I(symbolProvider->ProcessHandle);
|
||||
|
||||
PH_UNLOCK_SYMBOLS();
|
||||
}
|
||||
|
||||
@@ -244,6 +249,8 @@ VOID PhpRegisterSymbolProvider(
|
||||
PH_LOCK_SYMBOLS();
|
||||
SymInitialize_I(SymbolProvider->ProcessHandle, NULL, FALSE);
|
||||
PH_UNLOCK_SYMBOLS();
|
||||
|
||||
SymbolProvider->IsRegistered = TRUE;
|
||||
}
|
||||
|
||||
PhEndInitOnce(&SymbolProvider->InitOnce);
|
||||
@@ -254,6 +261,8 @@ VOID PhpRegisterSymbolProvider(
|
||||
PH_LOCK_SYMBOLS();
|
||||
SymInitialize_I(SymbolProvider->ProcessHandle, NULL, FALSE);
|
||||
PH_UNLOCK_SYMBOLS();
|
||||
|
||||
SymbolProvider->IsRegistered = TRUE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user