FsRtlFastUnlockSingle

NTSTATUS __stdcall FsRtlFastUnlockSingle(
        PFILE_LOCK FileLock,
        PFILE_OBJECT FileObject,
        _LARGE_INTEGER *FileOffset,
        PLARGE_INTEGER Length,
        PEPROCESS ProcessId,
        UINT64 Key,
        VOID *Context,
        BOOL AlreadySynchronized){
  _LOCK_INFO *LockInformation; 
  NTSTATUS result; 
  UINT64 v14; 
  UINT64 v15; 

  LockInformation = (_LOCK_INFO *)FileLock->LockInformation;
  if( !LockInformation )
    return -1073741698;
  if( (unsigned __int64)(Length->QuadPart + FileOffset->QuadPart - 1) < FileOffset->QuadPart && Length->QuadPart )
    return -1073741407;
  LODWORD(v14) = Key;
  if( !FsRtlFastUnlockSingleExclusive(
          LockInformation,
          (_RTL_SPLAY_LINKS *)FileObject,
          FileOffset,
          (_RTL_SPLAY_LINKS **)Length,
          (_RTL_SPLAY_LINKS *)ProcessId,
          v14,
          Context,
          0,
          1u) )
    return 0;
  LODWORD(v15) = Key;
  FsRtlFastUnlockSingleShared(
    (_LOCK_INFO *)FileLock->LockInformation,
    FileObject,
    FileOffset,
    Length,
    ProcessId,
    v15,
    Context,
    0,
    1u);
  return result;
}

Referenced by:

FsRtlProcessFileLock