using System.Runtime.InteropServices; namespace SabreTools.Models.LinearExecutable { /// /// The Module Format Directives Table is an optional table that allows additional /// options to be specified. It also allows for the extension of the linear EXE /// format by allowing additional tables of information to be added to the linear /// EXE module without affecting the format of the linear EXE header. Likewise, /// module format directives provide a place in the linear EXE module for /// 'temporary tables' of information, such as incremental linking information /// and statistic information gathered on the module. When there are no module /// format directives for a linear EXE module, the fields in the linear EXE header /// referencing the module format directives table are zero. /// /// /// [StructLayout(LayoutKind.Sequential)] public sealed class ModuleFormatDirectivesTableEntry { /// /// Directive number. /// /// /// The directive number specifies the type of directive defined. This can be /// used to determine the format of the information in the directive data. /// [MarshalAs(UnmanagedType.U2)] public DirectiveNumber DirectiveNumber; /// /// Directive data length. /// /// /// This specifies the length in byte of the directive data for this directive number. /// public ushort DirectiveDataLength; /// /// Directive data offset. /// /// /// This is the offset to the directive data for this directive number. It is relative /// to beginning of linear EXE header for a resident table, and relative to the /// beginning of the EXE file for non-resident tables. /// public uint DirectiveDataOffset; } }