ExQuerySystemLockInformation
INT64 __fastcall ExQuerySystemLockInformation(_DWORD *a1, UINT64 a2, UINT64 *a3){
unsigned int v3;
unsigned int v5;
unsigned int v7;
_DWORD *v8;
KIRQL v9;
INT64(__fastcall *v10)(INT64 *, UINT64 *);
INT64(__fastcall *v11)(INT64 *, UINT64 *);
unsigned __int64 v12;
__int64 v13;
__int64 v14;
INT64 v15;
v3 = 8;
v5 = a2;
if( (unsigned int)a2 >= 8 )
{
*a1 = 0;
v8 = a1 + 2;
v7 = 0;
MmLockPagableSectionByHandle(ExPageLockHandle);
v9 = ExAcquireSpinLockShared(&ExpResourceSpinLock);
v10 = *(INT64(__fastcall **)(INT64 *, UINT64 *))ExpSystemResourcesList;
v11 = ExpSystemResourcesList;
v12 = v9;
while( v10 != v11 )
{
++*a1;
v3 += 48;
if( v3 < 0x30 )
{
v7 = -1073741675;
break;
}
if( v5 >= v3 )
{
*(_QWORD *)v8 = v10;
v8[2] = 1;
v13 = ExpOwnerEntryToThread((__int64 *)v10 + 6);
if( v13 )
v14 = *(_QWORD *)(v13 + 1152);
else
v14 = 0i64;
*((_QWORD *)v8 + 2) = v14;
v8[6] = *((_DWORD *)v10 + 16);
v8[7] = *((_DWORD *)v10 + 17);
v8[10] = *((_DWORD *)v10 + 18);
v8[11] = *((_DWORD *)v10 + 19);
v8 += 12;
}
else
{
v7 = -1073741820;
}
v10 = *(INT64(__fastcall **)(INT64 *, UINT64 *))v10;
}
ExReleaseSpinLockSharedFromDpcLevel(&ExpResourceSpinLock);
__writecr8(v12);
MmUnlockPagableImageSection(ExPageLockHandle, v15);
}
else
{
v7 = -1073741820;
}
if( a3 )
*(_DWORD *)a3 = v3;
return v7;
}Referenced by:
ExpGetLockInformation