internal CLRMetaDataHeader(CLRMetaData metaData) { long offset = metaData.Location.Offset; Stream stream = metaData.Content.Section.Sections.Reader.GetStream(); stream.Seek(offset,SeekOrigin.Begin); MetaData = metaData; Signature = Utils.ReadUInt32(stream); if (Signature != CLR_METADATA_SIGNATURE) throw new ExeReaderException("Incorrect signature found in CLR meta-data header."); MajorVersion = Utils.ReadUInt16(stream); MinorVersion = Utils.ReadUInt16(stream); Reserved = Utils.ReadUInt32(stream); VersionLength = Utils.ReadUInt32(stream); Version = Utils.ReadString(stream,VersionLength); Flags = Utils.ReadUInt16(stream); Streams = Utils.ReadUInt16(stream); long size = stream.Position - offset; Location = new StreamLocation(offset,size); }
internal CLRContent(DataDirectory dataDirectory, Section section) : base(dataDirectory,section) { long offset = section.RVAToOffset(dataDirectory.VirtualAddress); location = new StreamLocation(offset,dataDirectory.Size); header = new CLRHeader(this,dataDirectory); meta_data = null; }