/// <summary>
 /// Reads a single method definition row from an input stream.
 /// </summary>
 /// <param name="reader">The input stream.</param>
 /// <param name="layout">The layout of the method definition table.</param>
 /// <param name="referenceResolver">The resolver to use for resolving the virtual address of the method body.</param>
 /// <returns>The row.</returns>
 public static MethodDefinitionRow FromReader(IBinaryStreamReader reader, TableLayout layout, ISegmentReferenceResolver referenceResolver)
 {
     return(new MethodDefinitionRow(
                referenceResolver.GetReferenceToRva(reader.ReadUInt32()),
                (MethodImplAttributes)reader.ReadUInt16(),
                (MethodAttributes)reader.ReadUInt16(),
                reader.ReadIndex((IndexSize)layout.Columns[3].Size),
                reader.ReadIndex((IndexSize)layout.Columns[4].Size),
                reader.ReadIndex((IndexSize)layout.Columns[5].Size)));
 }
Ejemplo n.º 2
0
        /// <inheritdoc />
        public IDebugDataSegment ReadDebugData(DebugDataType type, uint rva, uint size)
        {
            var reference = _resolver.GetReferenceToRva(rva);

            if (reference is null || !reference.CanRead)
            {
                return(null);
            }

            var reader = reference.CreateReader();

            reader.ChangeSize(size);

            return(new CustomDebugDataSegment(type, DataSegment.FromReader(reader)));
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Reads a single field RVA row from an input stream.
 /// </summary>
 /// <param name="reader">The input stream.</param>
 /// <param name="layout">The layout of the field RVA table.</param>
 /// <param name="referenceResolver"></param>
 /// <returns>The row.</returns>
 public static FieldRvaRow FromReader(IBinaryStreamReader reader, TableLayout layout, ISegmentReferenceResolver referenceResolver)
 {
     return(new FieldRvaRow(
                referenceResolver.GetReferenceToRva(reader.ReadUInt32()),
                reader.ReadIndex((IndexSize)layout.Columns[1].Size)));
 }