/// <inheritdoc /> /// <exception cref="ObjectDisposedException">Thrown if the archive has been disposed.</exception> /// <exception cref="FileNotFoundException">Thrown if the archive does not contain a file at the given path.</exception> public MPQFileInfo GetFileInfo(string filePath) { ThrowIfDisposed(); if (!ContainsFile(filePath)) { throw new FileNotFoundException("The given file was not present in the archive.", filePath); } HashTableEntry hashEntry = ArchiveHashTable.FindEntry(filePath); BlockTableEntry blockEntry = ArchiveBlockTable.GetEntry((int)hashEntry.GetBlockEntryIndex()); if (HasFileAttributes()) { return(new MPQFileInfo(filePath, hashEntry, blockEntry)); } return(new MPQFileInfo(filePath, hashEntry, blockEntry, FileAttributes.FileAttributes[(int)hashEntry.GetBlockEntryIndex()])); }