示例#1
0
        /// <summary>
        /// Reads a single <see cref="X64RuntimeFunction"/> from the provided input stream.
        /// </summary>
        /// <param name="context">The reader context.</param>
        /// <param name="reader">The input stream.</param>
        /// <returns>The read function entry.</returns>
        public static X64RuntimeFunction FromReader(PEReaderContext context, IBinaryStreamReader reader)
        {
            uint begin         = reader.ReadUInt32();
            uint end           = reader.ReadUInt32();
            uint unwindInfoRva = reader.ReadUInt32();

            var unwindInfo = context.File.TryCreateReaderAtRva(unwindInfoRva, out var unwindReader)
                ? X64UnwindInfo.FromReader(context, unwindReader)
                : context.BadImageAndReturn <X64UnwindInfo>($"Invalid UnwindInfo RVA {unwindInfoRva:X8}.");

            return(new X64RuntimeFunction(
                       context.File.GetReferenceToRva(begin),
                       context.File.GetReferenceToRva(end),
                       unwindInfo));
        }