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;
}
}