void ReadHeader() { if (!QarArchiveHeader.TryRead(_reader, out _header)) { throw new InvalidDataException("The contents of the stream are not in the qar archive format."); } }
public uint Unknown2; // 0 public static bool TryRead(BinaryReader reader, out QarArchiveHeader header) { header = new QarArchiveHeader(); // invalid magic number if (reader.ReadUInt32() != Signature) { return(false); } header.Flags = reader.ReadUInt32() ^ xorMask1; header.FileCount = reader.ReadUInt32() ^ xorMask2; header.UnknownCount = reader.ReadUInt32() ^ xorMask3; header.BlockFileEnd = reader.ReadUInt32() ^ xorMask4; header.OffsetFirstFile = reader.ReadUInt32() ^ xorMask1; header.Version = reader.ReadUInt32() ^ xorMask1; // 1 2 header.Unknown2 = reader.ReadUInt32() ^ xorMask2; // 0 // unknow version if (header.Version != 1 && header.Version != 2) { return(false); } // unknow Unknown2... what? if (header.Unknown2 != 0) { return(false); } return(true); }