Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
     }
 }