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:
wj32
2010-08-28 03:45:00 +00:00
parent 7e67ecb4aa
commit 74471efe09
3 changed files with 18 additions and 1 deletions
+1
View File
@@ -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
+7
View File
@@ -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
+10 -1
View File
@@ -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
}