RtlpCSparseBitmapLock
UINT8 __fastcall RtlpCSparseBitmapLock(__int64 a1, int a2, __int64 a3){
_EX_PUSH_LOCK *v5;
UINT8 result;
_ETHREAD *CurrentThread;
v5 = (_EX_PUSH_LOCK *)(a1 + 24);
if( *(_BYTE *)(a1 + 48) )
{
if( a2 == 1 )
result = ExAcquireSpinLockExclusive(&v5->_bf_0);
else
result = ExAcquireSpinLockShared(&v5->_bf_0);
}
else
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.SpecialApcDisable;
if( a2 == 1 )
ExAcquirePushLockExclusiveEx(v5, 0i64);
else
ExAcquirePushLockSharedEx(v5, 0i64);
result = -1;
}
*(_BYTE *)(a3 + 4) = result;
*(_QWORD *)(a3 + 8) = a1;
*(_DWORD *)a3 = a2;
return result;
}Referenced by:
RtlpCSparseBitmapPageCommit
RtlpCSparseBitmapPageDecommit