TryLockShutdownShared
UINT8 __stdcall TryLockShutdownShared(){
_ETHREAD *CurrentThread;
_BYTE *v1;
UINT8 v2;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
v1 = KeAbPreAcquire((char *)&CmpDummyThreadEvent + 2712, 0i64, 1ui64);
v2 = 0;
if( !_InterlockedCompareExchange64((_QWORD *)&CmpDummyThreadEvent + 339, 17i64, 0i64)
|| ExfTryAcquirePushLockShared((_EX_PUSH_LOCK *)&CmpDummyThreadEvent + 339) )
{
if( v1 )
v1[26] |= 1u;
return 1;
}
else
{
if( v1 )
KeAbPostReleaseEx((char *)&CmpDummyThreadEvent + 2712, v1);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}
return v2;
}Referenced by:
CmpSyncNextBackupHive