using System.Runtime.InteropServices; namespace SabreTools.Data.Models.InstallShieldCabinet { /// [StructLayout(LayoutKind.Sequential)] public sealed class Descriptor { /// /// Offset to the descriptor strings /// public uint StringsOffset; /// /// Reserved /// public uint Reserved0; /// /// Offset to the component list /// public uint ComponentListOffset; /// /// Offset to the file table /// public uint FileTableOffset; /// /// Reserved /// public uint Reserved1; /// /// Size of the file table /// public uint FileTableSize; /// /// Redundant size of the file table /// public uint FileTableSize2; /// /// Number of directories /// public ushort DirectoryCount; /// /// Reserved /// public uint Reserved2; /// /// Reserved /// public ushort Reserved3; /// /// Reserved /// public uint Reserved4; /// /// Number of files /// public uint FileCount; /// /// Redundant offset to the file table /// public uint FileTableOffset2; /// /// Number of component table infos /// public ushort ComponentTableInfoCount; /// /// Offset to the component table /// public uint ComponentTableOffset; /// /// Reserved /// public uint Reserved5; /// /// Reserved /// public uint Reserved6; /// /// Offsets to the file groups /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 71)] public uint[] FileGroupOffsets = new uint[71]; /// /// Offsets to the components /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 71)] public uint[] ComponentOffsets = new uint[71]; /// /// Offset to the setup types /// public uint SetupTypesOffset; /// /// Offset to the setup table /// public uint SetupTableOffset; /// /// Reserved /// public uint Reserved7; /// /// Reserved /// public uint Reserved8; } }