ExpGetNextCallback
UINT64 __fastcall ExpGetNextCallback(PVOID Object){
_ETHREAD *CurrentThread;
int v2;
void **v3;
void **v5;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v2 = 0;
v3 = 0i64;
--CurrentThread->Tcb.SpecialApcDisable;
ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 14, 0i64);
v5 = (void **)*(&ExBootDevicesRemovedEvent + 12);
if( Object )
v5 = (void **)*((_QWORD *)Object + 5);
while( v5 != (void **)((char *)&ExBootDevicesRemovedEvent + 96) )
{
v3 = v5 - 5;
if( ObReferenceObjectSafeWithTag((INT64)(v5 - 5), 1850046533i64) )
{
v2 = 1;
break;
}
v5 = (void **)*v5;
}
ExReleasePushLockEx((ULONG_PTR)&ExBootDevicesRemovedEvent + 112, 0);
KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
if( Object )
ObfDereferenceObjectWithTag(Object, 0x6E457845ui64);
return(unsigned __int64)v3 & -(__int64)(v2 != 0);
}Referenced by:
No references.