using System.Collections.Generic; namespace SabreTools.Models.PortableExecutable { /// /// All image files that import symbols, including virtually all executable (EXE) files, /// have an .idata section. A typical file layout for the import information follows: /// /// - Directory Table /// Null Directory Entry /// - DLL1 Import Lookup Table /// Null /// - DLL2 Import Lookup Table /// Null /// - DLL3 Import Lookup Table /// Null /// - Hint-Name Table /// /// public sealed class ImportTable { /// /// The import information begins with the import directory table, which describes the /// remainder of the import information. /// #if NET48 public ImportDirectoryTableEntry[] ImportDirectoryTable; #else public ImportDirectoryTableEntry[]? ImportDirectoryTable; #endif /// /// An import lookup table is an array of 32-bit numbers for PE32 or an array of 64-bit /// numbers for PE32+. /// #if NET48 public Dictionary ImportLookupTables; #else public Dictionary? ImportLookupTables; #endif /// /// These addresses are the actual memory addresses of the symbols, although technically /// they are still called "virtual addresses". /// #if NET48 public Dictionary ImportAddressTables; #else public Dictionary? ImportAddressTables; #endif /// /// One hint/name table suffices for the entire import section. /// #if NET48 public HintNameTableEntry[] HintNameTable; #else public HintNameTableEntry[]? HintNameTable; #endif } }