internal void Write(BinaryWriter bw) { bw.Write(PexMagic); bw.Write(MajorVersion); bw.Write(MinorVersion); bw.Write(GameId); bw.Write(CompilationTime.ToUInt64()); bw.Write(SourceFileName); bw.Write(Username); bw.Write(MachineName); var memoryTrib = new MemoryTributary(); var bw2 = new PexWriter(memoryTrib, Encoding.UTF8, this._gameCategory.IsBigEndian()); var writeMeta = new PexWriteMeta(_gameCategory, bw2); WriteContent(writeMeta); bw.Write((ushort)writeMeta.Strings.Count); foreach (var pair in writeMeta.Strings .OrderBy(x => x.Value)) { bw.Write(pair.Key); } memoryTrib.Position = 0; memoryTrib.CopyTo(bw.BaseStream); }
public void Dispose() { _tributary.Position = 0; if (_tributary.Length <= ushort.MaxValue) { using (HeaderExport.Subrecord(_writer, _mainRecord)) { _tributary.CopyTo(_writer.BaseStream); } } else { using (HeaderExport.Subrecord(_writer, _extraLengthRecord)) { _writer.Write(checked ((uint)_tributary.Length)); } _writer.Write(_mainRecord.TypeInt); _writer.WriteZeros(2); _tributary.CopyTo(_writer.BaseStream); } }