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

◆ CalculateMetadataLocation()

void System.Reflection.PortableExecutable.PEHeaders.CalculateMetadataLocation ( long peImageSize,
out int start,
out int size )
inlineprivate

Definition at line 219 of file PEHeaders.cs.

220 {
221 if (IsCoffOnly)
222 {
223 int num = IndexOfSection(".cormeta");
224 if (num == -1)
225 {
226 start = -1;
227 size = 0;
228 return;
229 }
230 if (_isLoadedImage)
231 {
232 start = SectionHeaders[num].VirtualAddress;
233 size = SectionHeaders[num].VirtualSize;
234 }
235 else
236 {
237 start = SectionHeaders[num].PointerToRawData;
238 size = SectionHeaders[num].SizeOfRawData;
239 }
240 }
241 else
242 {
243 if (_corHeader == null)
244 {
245 start = 0;
246 size = 0;
247 return;
248 }
249 if (!TryGetDirectoryOffset(_corHeader.MetadataDirectory, out start, canCrossSectionBoundary: false))
250 {
251 throw new BadImageFormatException(System.SR.MissingDataDirectory);
252 }
254 }
255 if (start < 0 || start >= peImageSize || size <= 0 || start > peImageSize - size)
256 {
257 throw new BadImageFormatException(System.SR.InvalidMetadataSectionSpan);
258 }
259 }
ImmutableArray< SectionHeader > SectionHeaders
Definition PEHeaders.cs:51
bool TryGetDirectoryOffset(DirectoryEntry directory, out int offset)
Definition PEHeaders.cs:173
static string MissingDataDirectory
Definition SR.cs:44
static string InvalidMetadataSectionSpan
Definition SR.cs:26
Definition SR.cs:7

References System.Reflection.PortableExecutable.PEHeaders._corHeader, System.Reflection.PortableExecutable.PEHeaders._isLoadedImage, System.Reflection.PortableExecutable.PEHeaders.IndexOfSection(), System.SR.InvalidMetadataSectionSpan, System.Reflection.PortableExecutable.PEHeaders.IsCoffOnly, System.Reflection.PortableExecutable.CorHeader.MetadataDirectory, System.SR.MissingDataDirectory, System.Reflection.PortableExecutable.PEHeaders.SectionHeaders, System.Reflection.PortableExecutable.DirectoryEntry.Size, System.start, and System.Reflection.PortableExecutable.PEHeaders.TryGetDirectoryOffset().

Referenced by System.Reflection.PortableExecutable.PEHeaders.PEHeaders().