FsRtlPrivateCheckForSharedLockAccess

VOID __fastcall FsRtlPrivateCheckForSharedLockAccess(_LOCK_QUEUE *LockQueue, _FILE_LOCK_INFO *FileLockInfo){
  _RTL_SPLAY_LINKS *v3; 
  _RTL_SPLAY_LINKS *FirstOverlappingExclusiveNode; 
  _LARGE_INTEGER EndingByte; 
  _RTL_SPLAY_LINKS *LastEdgeNode; 

  LastEdgeNode = 0i64;
  v3 = (_RTL_SPLAY_LINKS *)*((_QWORD *)LockQueue + 2);
  if( v3 )
  {
    FirstOverlappingExclusiveNode = FsRtlFindFirstOverlappingExclusiveNode(
                                      v3,
                                      &FileLockInfo->StartingByte,
                                      &FileLockInfo->EndingByte,
                                      &LastEdgeNode,
                                      0i64);
    if( FirstOverlappingExclusiveNode )
    {
      EndingByte = FileLockInfo->EndingByte;
      do
      {
        if( FirstOverlappingExclusiveNode[1].Parent > (_RTL_SPLAY_LINKS *)EndingByte.QuadPart
          || (FirstOverlappingExclusiveNode[2].Parent != (_RTL_SPLAY_LINKS *)FileLockInfo->FileObject
           || FirstOverlappingExclusiveNode[2].LeftChild != FileLockInfo->ProcessId
           || HIDWORD(FirstOverlappingExclusiveNode[1].RightChild) != FileLockInfo->Key)
          && (FileLockInfo->Length.QuadPart || FirstOverlappingExclusiveNode[1].LeftChild) )
        {
          break;
        }
        FirstOverlappingExclusiveNode = RtlRealSuccessor(FirstOverlappingExclusiveNode);
      }
      while( FirstOverlappingExclusiveNode );
    }
    if( LastEdgeNode )
      *((_QWORD *)LockQueue + 2) = RtlSplay(LastEdgeNode);
  }
}

Referenced by:

FsRtlPrivateCheckWaitingLocks
FsRtlPrivateLock