VrpIncrementSiloCount
INT64 __stdcall VrpIncrementSiloCount(){
_ETHREAD *CurrentThread;
int v1;
INT64 v2;
char v3;
UNICODE_STRING v5;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v1 = 0;
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx((UINT64)&VrpActiveSilosLock, 0i64);
if( VrpNumActiveSilos
|| (*(_QWORD *)&v5.Length = 917516i64,
v5.Buffer = (wchar_t *)&stru_1407CDE30.Xmm15,
v1 = CmRegisterInternalCallback(v2, &v5),
v1 >= 0) )
{
++VrpNumActiveSilos;
}
v3 = _InterlockedExchangeAdd64((volatile signed __int64 *)&VrpActiveSilosLock, 0xFFFFFFFFFFFFFFFFui64);
if( (v3 & 2) != 0 && (v3 & 4) == 0 )
ExfTryToWakePushLock((volatile INT64 *)&VrpActiveSilosLock);
KeAbPostRelease(&VrpActiveSilosLock);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
return(unsigned int)v1;
}Referenced by:
VrpHandleIoctlInitializeJobForVreg