SmGetRegistrationInfo
INT64 __fastcall SmGetRegistrationInfo(KPROCESSOR_MODE a1, INT64 a2){
_ETHREAD *CurrentThread;
int v5;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx((UINT64)&BugCheckParameter2, 0i64);
if( (dword_140D23140 & 8) != 0 )
{
v5 = 0;
}
else
{
v5 = SmRegistrationCtxStart((struct DMA_ADAPTER **)&qword_140D233F0);
if( v5 >= 0 )
dword_140D23140 |= 8u;
}
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&BugCheckParameter2, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&BugCheckParameter2);
KeAbPostRelease(&BugCheckParameter2);
KeLeaveCriticalRegion();
if( v5 >= 0 )
{
v5 = SmRegistrationInfoFill(&qword_140D233F0, a1, (_QWORD *)(a2 + 8));
if( v5 >= 0 )
return 0;
}
return(unsigned int)v5;
}Referenced by:
SmProcessRegistrationRequest