AlpcpTryLockForCachedReferenceBlob
UINT8 __stdcall AlpcpTryLockForCachedReferenceBlob(PVOID Blob){
_BYTE *v2;
signed __int64 BugCheckParameter4;
LODWORD(v2) = KeAbPreAcquire((char *)Blob - 16, 0i64, 1ui64);
if( _interlockedbittestandset64((volatile signed __int32 *)Blob - 4, 0i64) )
{
if( v2 )
KeAbPostReleaseEx((char *)Blob - 16, v2);
return 0;
}
else
{
if( v2 )
v2[26] |= 1u;
*((char *)Blob - 32) |= 1u;
BugCheckParameter4 = _InterlockedExchangeAdd64((volatile signed __int64 *)Blob - 3, 0x10000ui64) + 0x10000;
if( BugCheckParameter4 <= 0 )
KeBugCheckEx(0x18u, 0i64, (ULONG_PTR)Blob, 0x27ui64, BugCheckParameter4);
return 1;
}
}Referenced by:
AlpcpCancelMessagesByRequestor
AlpcpReceiveMessagePort