PspReferenceSystemDll
UINT64 __fastcall PspReferenceSystemDll(__int64 a1){
UINT64 v2;
_ETHREAD *CurrentThread;
v2 = (UINT64)ObFastReferenceObject((INT64 *)a1);
if( !v2 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockSharedEx(a1 + 8, 0i64);
v2 = ObFastReferenceObjectLocked((_EX_FAST_REF *)a1);
if( _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 8), 0i64, 17i64) != 17 )
ExfReleasePushLockShared((INT64 *)(a1 + 8));
KeAbPostRelease((PVOID)(a1 + 8));
KeLeaveCriticalRegionThread((__int64)CurrentThread);
}
return v2;
}Referenced by:
DbgkCreateThread
MmInitSystemDll
PspGetSystemDllSecureHandle
PspMapSystemDll