FsRtlPrivateInsertLock
VOID __fastcall FsRtlPrivateInsertLock(_LOCK_INFO *LockInfo, _FILE_OBJECT *FileObject, _FILE_LOCK_INFO *FileLockInfo){
char *v6;
VOID *v7;
void *v8;
char v9;
char *v10;
if( FileLockInfo->ExclusiveLock )
{
v10 = (char *)ExAllocateFromNPagedLookasideList((_NPAGED_LOOKASIDE_LIST *)((char *)&WheapErrorSourceTable + 2728));
if( !v10 )
return;
v8 = v10 + 24;
*(_OWORD *)(v10 + 24) = *(_OWORD *)&FileLockInfo->StartingByte.anonymous_0.LowPart;
*(_OWORD *)(v10 + 40) = *(_OWORD *)&FileLockInfo->ExclusiveLock;
*(_OWORD *)(v10 + 56) = *(_OWORD *)&FileLockInfo->ProcessId;
FsRtlPrivateInsertExclusiveLock(LockInfo + 6, (PRTL_SPLAY_LINKS *)v10);
}
else
{
v6 = (char *)ExAllocateFromNPagedLookasideList((_NPAGED_LOOKASIDE_LIST *)((char *)&WheapErrorSourceTable + 2600));
v7 = v6;
if( !v6 )
return;
v8 = v6 + 8;
*(_OWORD *)(v6 + 8) = *(_OWORD *)&FileLockInfo->StartingByte.anonymous_0.LowPart;
*(_OWORD *)(v6 + 24) = *(_OWORD *)&FileLockInfo->ExclusiveLock;
*(_OWORD *)(v6 + 40) = *(_OWORD *)&FileLockInfo->ProcessId;
FsRtlPrivateInsertSharedLock(LockInfo + 6, (_SH_LOCK *)v6);
if( !v9 )
{
ExFreeToNPagedLookasideList((_NPAGED_LOOKASIDE_LIST *)((char *)&WheapErrorSourceTable + 2600), v7);
return;
}
}
FileObject->LastLock = v8;
if( FileLockInfo->StartingByte.QuadPart < *(_QWORD *)LockInfo )
*(_QWORD *)LockInfo = FileLockInfo->StartingByte.QuadPart;
}Referenced by:
FsRtlPrivateCheckWaitingLocks
FsRtlPrivateLock