// /*************************************************************************** // Aaru Data Preservation Suite // ---------------------------------------------------------------------------- // // Filename : Symbian.cs // Author(s) : Natalia Portillo // // Component : Symbian plugin. // // --[ Description ] ---------------------------------------------------------- // // Identifies Symbian installer (.sis) packages and shows information. // // --[ License ] -------------------------------------------------------------- // // This library is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as // published by the Free Software Foundation; either version 2.1 of the // License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, see . // // ---------------------------------------------------------------------------- // Copyright © 2011-2023 Natalia Portillo // ****************************************************************************/ using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; namespace Aaru.Archives; [SuppressMessage("ReSharper", "UnusedType.Global")] [SuppressMessage("ReSharper", "UnusedType.Local")] public partial class Symbian { #region Nested type: SymbianHeader [StructLayout(LayoutKind.Sequential, Pack = 1)] struct SymbianHeader { /// /// Application UID before SymbianOS 9, magic after /// public uint uid1; /// /// EPOC release magic before SOS 9, NULLs after /// public uint uid2; /// /// Application UID after SOS 9, magic before /// public uint uid3; /// /// Checksum of UIDs 1 to 3 /// public uint uid4; /// /// CRC16 of all header /// public ushort crc16; /// /// Number of languages /// public ushort languages; /// /// Number of files /// public ushort files; /// /// Number of requisites /// public ushort requisites; /// /// Installed language (only residual SIS) /// public ushort inst_lang; /// /// Installed files (only residual SIS) /// public ushort inst_files; /// /// Installed drive (only residual SIS), NULL or 0x0021 /// public ushort inst_drive; /// /// Number of capabilities /// public ushort capabilities; /// /// Version of Symbian Installer required /// public uint inst_version; /// /// Option flags /// public SymbianOptions options; /// /// Type /// public SymbianType type; /// /// Major version of application /// public ushort major; /// /// Minor version of application /// public ushort minor; /// /// Variant when SIS is a prerequisite for other SISs /// public uint variant; /// /// Pointer to language records /// public uint lang_ptr; /// /// Pointer to file records /// public uint files_ptr; /// /// Pointer to requisite records /// public uint reqs_ptr; /// /// Pointer to certificate records /// public uint certs_ptr; /// /// Pointer to component name record /// public uint comp_ptr; // From EPOC Release 6 /// /// Pointer to signature record /// public uint sig_ptr; /// /// Pointer to capability records /// public uint caps_ptr; /// /// Installed space (only residual SIS) /// public uint instspace; /// /// Space required /// public uint maxinsspc; /// /// Reserved /// public ulong reserved1; /// /// Reserved /// public ulong reserved2; } #endregion }