DbgEnumerateCallback
LIST_ENTRY *__fastcall DbgEnumerateCallback(VOID **EnumerationContext){
void **v2;
unsigned __int64 v3;
struct _EX_RUNDOWN_REF *v4;
LIST_ENTRY *Count;
ExAcquireSpinLockSharedAtDpcLevel(&RtlpDebugPrintCallbackLock);
v2 = &RtlpDebugPrintCallbackList;
if( *EnumerationContext )
v2 = (void **)*EnumerationContext;
v3 = (unsigned __int64)*EnumerationContext & -(__int64)(*EnumerationContext != 0i64);
v4 = (struct _EX_RUNDOWN_REF *)*v2;
Count = 0i64;
while( v4 != (struct _EX_RUNDOWN_REF *)&RtlpDebugPrintCallbackList )
{
if( ExAcquireRundownProtection(v4 - 2) )
{
Count = (LIST_ENTRY *)v4[-1].Count;
*EnumerationContext = v4;
break;
}
v4 = (struct _EX_RUNDOWN_REF *)v4->Count;
}
ExReleaseSpinLockSharedFromDpcLevel(&RtlpDebugPrintCallbackLock);
if( v3 )
ExReleaseRundownProtection((PEX_RUNDOWN_REF)(v3 - 16));
return Count;
}Referenced by:
No references.