Exemplo n.º 1
0
 internal static SectionHeader ReadSectionHeader(MemoryCursor/*!*/ c)
 {
     SectionHeader header = new SectionHeader();
     header.name = c.ReadASCII(8);
     header.virtualSize = c.Int32(0);
     header.virtualAddress = c.Int32(1);
     header.sizeOfRawData = c.Int32(2);
     header.pointerToRawData = c.Int32(3);
     header.pointerToRelocations = c.Int32(4);
     header.pointerToLinenumbers = c.Int32(5); c.SkipInt32(6);
     header.numberOfRelocations = c.UInt16(0);
     header.numberOfLinenumbers = c.UInt16(1); c.SkipInt16(2);
     header.characteristics = c.Int32(0); c.SkipInt32(1);
     return header;
 }
Exemplo n.º 2
0
 private static StreamHeader ReadStreamHeader(MemoryCursor/*!*/ c)
 {
     StreamHeader header = new StreamHeader();
     header.offset = c.ReadInt32();
     header.size = c.ReadInt32();
     header.name = c.ReadASCII();
     int n = header.name.Length + 1;
     c.Position += (4 - (n % 4)) % 4;
     return header;
 }
Exemplo n.º 3
0
 private static MetadataHeader/*!*/ ReadMetadataHeader(MemoryCursor/*!*/ c)
 {
     MetadataHeader header = new MetadataHeader();
     header.signature = c.ReadInt32();
     if (header.signature != 0x424a5342)
         throw new InvalidMetadataException(ExceptionStrings.BadMetadataHeaderSignature);
     header.majorVersion = c.ReadUInt16();
     header.minorVersion = c.ReadUInt16();
     header.reserved = c.ReadInt32();
     int len = c.ReadInt32();
     header.versionString = c.ReadASCII(len);
     while (len++ % 4 != 0) c.ReadByte();
     header.flags = c.ReadUInt16();
     int n = c.ReadUInt16();
     StreamHeader[] streamHeaders = header.streamHeaders = new StreamHeader[n];
     for (int i = 0; i < n; i++)
         streamHeaders[i] = ReadStreamHeader(c);
     return header;
 }