ExTryToAcquireFastMutex
UINT8 __stdcall ExTryToAcquireFastMutex(_FAST_MUTEX *FastMutex){
_BYTE *v2;
unsigned __int8 CurrentIrql;
UINT8 result;
v2 = KeAbPreAcquire(FastMutex, 0i64, 1ui64);
CurrentIrql = KeGetCurrentIrql();
__writecr8(1ui64);
if( _interlockedbittestandreset(&FastMutex->Count, 0) )
{
if( v2 )
v2[26] |= 1u;
result = 1;
FastMutex->Owner = KeGetCurrentThread();
FastMutex->OldIrql = CurrentIrql;
}
else
{
__writecr8(CurrentIrql);
if( v2 )
KeAbPostReleaseEx(FastMutex, v2);
_mm_pause();
return 0;
}
return result;
}Referenced by:
CreateMiniNtBootKey
FsRtlTryToAcquireHeaderMutex
KeTryToAcquireGuardedMutex
RawScanDeletedList