internal static WindowsAssembly FromReadingContext(ReadingContext context)
{
var reader = context.Reader;
var application = new WindowsAssembly();
context.Assembly = application;
application.ReadingContext = context;
// Read absolute essential parts of PE:
// - DOS header
// - NT headers
// - Section headers
application._dosHeader = ImageDosHeader.FromReadingContext(context);
reader.Position = application.DosHeader.Lfanew;
application._ntHeaders = ImageNtHeaders.FromReadingContext(context);
reader.Position =
application.NtHeaders.OptionalHeader.StartOffset +
application.NtHeaders.FileHeader.SizeOfOptionalHeader;
for (int i = 0; i < application.NtHeaders.FileHeader.NumberOfSections; i++)
application.SectionHeaders.Add(ImageSectionHeader.FromReadingContext(context));
return application;
}