using System.Runtime.InteropServices; namespace BinaryObjectScanner.Models.PortableExecutable { /// /// Each directory table is followed by a series of directory entries that /// give the name or identifier (ID) for that level (Type, Name, or Language /// level) and an address of either a data description or another directory /// table. If the address points to a data description, then the data is a /// leaf in the tree. If the address points to another directory table, /// then that table lists directory entries at the next level down. /// /// Each resource directory table has the following format. This data /// structure should be considered the heading of a table because the table /// actually consists of directory entries. /// /// [StructLayout(LayoutKind.Sequential)] public sealed class ResourceDirectoryTable { /// /// Resource flags. This field is reserved for future use. It is currently /// set to zero. /// public uint Characteristics; /// /// The time that the resource data was created by the resource compiler. /// public uint TimeDateStamp; /// /// The major version number, set by the user. /// public ushort MajorVersion; /// /// The minor version number, set by the user. /// public ushort MinorVersion; /// /// The number of directory entries immediately following the table that use /// strings to identify Type, Name, or Language entries (depending on the /// level of the table). /// public ushort NumberOfNameEntries; /// /// The number of directory entries immediately following the Name entries that /// use numeric IDs for Type, Name, or Language entries. /// public ushort NumberOfIDEntries; /// /// Directory entries immediately following the table that use /// strings to identify Type, Name, or Language entries (depending on the /// level of the table). /// public ResourceDirectoryEntry[] Entries; } }