Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ PEHeaders() [3/3]

System.Reflection.PortableExecutable.PEHeaders.PEHeaders ( Stream peStream,
int size,
bool isLoadedImage )
inline

Definition at line 83 of file PEHeaders.cs.

84 {
85 if (peStream == null)
86 {
87 throw new ArgumentNullException("peStream");
88 }
89 if (!peStream.CanRead || !peStream.CanSeek)
90 {
92 }
93 _isLoadedImage = isLoadedImage;
94 int andValidateSize = StreamExtensions.GetAndValidateSize(peStream, size, "peStream");
95 PEBinaryReader reader = new PEBinaryReader(peStream, andValidateSize);
96 SkipDosHeader(ref reader, out var isCOFFOnly);
97 _coffHeaderStartOffset = reader.CurrentOffset;
98 _coffHeader = new CoffHeader(ref reader);
99 if (!isCOFFOnly)
100 {
101 _peHeaderStartOffset = reader.CurrentOffset;
102 _peHeader = new PEHeader(ref reader);
103 }
105 if (!isCOFFOnly && TryCalculateCorHeaderOffset(andValidateSize, out var startOffset))
106 {
107 _corHeaderStartOffset = startOffset;
108 reader.Seek(startOffset);
109 _corHeader = new CorHeader(ref reader);
110 }
112 }
static int GetAndValidateSize(Stream stream, int size, string streamParameterName)
void CalculateMetadataLocation(long peImageSize, out int start, out int size)
Definition PEHeaders.cs:219
readonly ImmutableArray< SectionHeader > _sectionHeaders
Definition PEHeaders.cs:13
bool TryCalculateCorHeaderOffset(long peStreamSize, out int startOffset)
Definition PEHeaders.cs:114
void SkipDosHeader(ref PEBinaryReader reader, out bool isCOFFOnly)
Definition PEHeaders.cs:129
ImmutableArray< SectionHeader > ReadSectionHeaders(ref PEBinaryReader reader)
Definition PEHeaders.cs:158
static string StreamMustSupportReadAndSeek
Definition SR.cs:52
Definition SR.cs:7

References System.Reflection.PortableExecutable.PEHeaders._coffHeader, System.Reflection.PortableExecutable.PEHeaders._coffHeaderStartOffset, System.Reflection.PortableExecutable.PEHeaders._corHeader, System.Reflection.PortableExecutable.PEHeaders._corHeaderStartOffset, System.Reflection.PortableExecutable.PEHeaders._isLoadedImage, System.Reflection.PortableExecutable.PEHeaders._metadataSize, System.Reflection.PortableExecutable.PEHeaders._metadataStartOffset, System.Reflection.PortableExecutable.PEHeaders._peHeader, System.Reflection.PortableExecutable.PEHeaders._peHeaderStartOffset, System.Reflection.PortableExecutable.PEHeaders._sectionHeaders, System.Reflection.PortableExecutable.PEHeaders.CalculateMetadataLocation(), System.IO.Stream.CanRead, System.IO.Stream.CanSeek, System.Reflection.PortableExecutable.PEHeaders.CoffHeader, System.Reflection.PortableExecutable.PEHeaders.CorHeader, System.Reflection.PortableExecutable.PEBinaryReader.CurrentOffset, System.Reflection.Internal.StreamExtensions.GetAndValidateSize(), System.Reflection.PortableExecutable.PEHeaders.PEHeader, System.Reflection.PortableExecutable.PEHeaders.ReadSectionHeaders(), System.Reflection.PortableExecutable.PEBinaryReader.Seek(), System.Reflection.PortableExecutable.PEHeaders.SkipDosHeader(), System.SR.StreamMustSupportReadAndSeek, and System.Reflection.PortableExecutable.PEHeaders.TryCalculateCorHeaderOffset().