ExpGetNextCallback
__int64 __fastcall ExpGetNextCallback(PVOID Object){
_ETHREAD *CurrentThread;
int v2;
__int64 *v3;
__int64 *v5;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v2 = 0;
v3 = 0i64;
--*((_WORD *)CurrentThread + 243);
ExAcquirePushLockSharedEx((UINT64)&ExpCallbackListLock, 0i64);
v5 = (__int64 *)ExpCallbackListHead;
if( Object )
v5 = (__int64 *)*((_QWORD *)Object + 5);
while( v5 != &ExpCallbackListHead )
{
v3 = v5 - 5;
if( ObReferenceObjectSafeWithTag(v5 - 5, 0x6E457845ui64) )
{
v2 = 1;
break;
}
v5 = (__int64 *)*v5;
}
ExReleasePushLockEx((UINT64)&ExpCallbackListLock, 0i64);
KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
if( Object )
ObfDereferenceObjectWithTag(Object, 0x6E457845ui64);
return(unsigned __int64)v3 & -(__int64)(v2 != 0);
}Referenced by:
No references.