IopGetBasicInformationFile

NTSTATUS __stdcall IopGetBasicInformationFile(
        _FILE_OBJECT *FileObject,
        _FILE_BASIC_INFORMATION *BasicInformationBuffer){
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 
  __int64(__fastcall *v7)(_FILE_OBJECT *, __int64, _FILE_BASIC_INFORMATION *, __int128 *, __int64); 
  VOID *v8; 
  __int64 v9; 
  char v10; 
  __int128 v12; 
  UINT64 ReturnedLength; 

  v12 = 0i64;
  LODWORD(v4) = IoGetRelatedDeviceObject((INT64)FileObject);
  v5 = v4;
  v6 = *(_QWORD *)(*(_QWORD *)(v4 + 8) + 80i64);
  if( !v6 )
    return IopGetFileInformation(FileObject, 0x28ui64, FileBasicInformation, BasicInformationBuffer, &ReturnedLength);
  v7 = *(__int64(__fastcall **)(_FILE_OBJECT *, __int64, _FILE_BASIC_INFORMATION *, __int128 *, __int64))(v6 + 32);
  if( !v7 )
    return IopGetFileInformation(FileObject, 0x28ui64, FileBasicInformation, BasicInformationBuffer, &ReturnedLength);
  v8 = (MmVerifierData & 0x10) != 0 ? VfFastIoSnapState() : 0i64;
  v9 = FileObject->Flags >> 1;
  LOBYTE(v9) = (FileObject->Flags & 2) != 0;
  v10 = v7(FileObject, v9, BasicInformationBuffer, &v12, v5);
  if( v8 )
    VfFastIoCheckState(v8, v7);
  if( v10 )
    return v12;
  else
    return IopGetFileInformation(FileObject, 0x28ui64, FileBasicInformation, BasicInformationBuffer, &ReturnedLength);
}

Referenced by:

IopOpenLinkOrRenameTarget