VerifierIoInitializeRemoveLockEx
void __fastcall VerifierIoInitializeRemoveLockEx(
_IO_REMOVE_LOCK *PublicLock,
UINT64 AllocateTag,
UINT64 MaxLockedMinutes,
UINT64 HighWatermark,
UINT64 RemlockSize){
unsigned int v5;
unsigned int v6;
unsigned int v7;
CHAR *Surrogate;
INT64 v10;
int v11;
CHAR *v12;
UINT64 *v13;
_IO_REMOVE_LOCK *v14;
UINT64 v15;
INT64 v16[2];
*(_OWORD *)v16 = 0i64;
v5 = HighWatermark;
v6 = MaxLockedMinutes;
v7 = AllocateTag;
if( !ViRemLockInitialized )
goto LABEL_14;
Surrogate = ViRemLockFindSurrogate();
if( Surrogate )
{
if( (MmVerifierData & 0x10) != 0 )
VerifierBugCheckIfAppropriate(0xC4ui64, 0xD7ui64, (UINT64)(Surrogate + 16), (UINT64)PublicLock, 0i64, v15);
_InterlockedAdd(&ViRemLockReusedCount, 1u);
v10 = (unsigned int)RemlockSize;
ViRemLockDeleteFirstTreeNode(PublicLock, (unsigned int)RemlockSize);
}
else
{
v10 = (unsigned int)RemlockSize;
}
v11 = 0;
if( (MmVerifierData & 0x10) == 0 )
goto LABEL_14;
v12 = VfAvlReserveNode((INT64)&ViRemLockAvl, (INT64)PublicLock, v10);
v13 = (UINT64 *)v12;
if( !v12 )
{
_InterlockedExchange(&ViRemLockAllocationFailures, 1);
LABEL_14:
pXdvIoInitializeRemoveLockEx(PublicLock, v7, v6, v5, (unsigned int)RemlockSize);
return;
}
v14 = (_IO_REMOVE_LOCK *)(v12 + 16);
if( (_DWORD)RemlockSize == 120 )
{
memset((INT64)v14, 0i64);
}
else
{
pXdvIoInitializeRemoveLockEx(v14, v7, v6, v5, 120);
v11 = 1;
}
VfAvlInitializeLockContext((INT64)v16, 0i64);
VfAvlInsertReservedTreeNode((INT64)&ViRemLockAvl, (INT64)v16, v13);
VfAvlCleanupLockContext((INT64)v16);
if( !v11 )
goto LABEL_14;
}Referenced by:
No references.