RtlpCSparseBitmapLock
UINT8 __fastcall RtlpCSparseBitmapLock(INT64 a1, INT64 a2, INT64 a3){
volatile LONG *v5;
int v6;
UINT8 result;
_ETHREAD *CurrentThread;
v5 = (volatile LONG *)(a1 + 24);
v6 = a2;
if( *(_BYTE *)(a1 + 48) )
{
if( (_DWORD)a2 == 1 )
result = ExAcquireSpinLockExclusive(v5);
else
result = ExAcquireSpinLockShared(v5);
}
else
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 243);
if( (_DWORD)a2 == 1 )
ExAcquirePushLockExclusiveEx((UINT64)v5, 0i64);
else
ExAcquirePushLockSharedEx((UINT64)v5, 0i64);
result = -1;
}
*(_BYTE *)(a3 + 4) = result;
*(_QWORD *)(a3 + 8) = a1;
*(_DWORD *)a3 = v6;
return result;
}Referenced by:
RtlpCSparseBitmapPageCommit
RtlpCSparseBitmapPageDecommit