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

◆ TryGetDirectoryOffset() [2/2]

bool System.Reflection.PortableExecutable.PEHeaders.TryGetDirectoryOffset ( DirectoryEntry directory,
out int offset,
bool canCrossSectionBoundary )
inlinepackage

Definition at line 178 of file PEHeaders.cs.

179 {
180 int containingSectionIndex = GetContainingSectionIndex(directory.RelativeVirtualAddress);
181 if (containingSectionIndex < 0)
182 {
183 offset = -1;
184 return false;
185 }
186 int num = directory.RelativeVirtualAddress - _sectionHeaders[containingSectionIndex].VirtualAddress;
187 if (!canCrossSectionBoundary && directory.Size > _sectionHeaders[containingSectionIndex].VirtualSize - num)
188 {
189 throw new BadImageFormatException(System.SR.SectionTooSmall);
190 }
191 offset = (_isLoadedImage ? directory.RelativeVirtualAddress : (_sectionHeaders[containingSectionIndex].PointerToRawData + num));
192 return true;
193 }
int GetContainingSectionIndex(int relativeVirtualAddress)
Definition PEHeaders.cs:195
readonly ImmutableArray< SectionHeader > _sectionHeaders
Definition PEHeaders.cs:13
static string SectionTooSmall
Definition SR.cs:50
Definition SR.cs:7

References System.Reflection.PortableExecutable.PEHeaders._isLoadedImage, System.Reflection.PortableExecutable.PEHeaders._sectionHeaders, System.Reflection.PortableExecutable.PEHeaders.GetContainingSectionIndex(), System.offset, System.Reflection.PortableExecutable.DirectoryEntry.RelativeVirtualAddress, System.SR.SectionTooSmall, and System.Reflection.PortableExecutable.DirectoryEntry.Size.