/* * Process Hacker - * image characteristics * * Copyright (C) 2008 wj32 * Descriptions from the PE/COFF specification from Microsoft. * * This file is part of Process Hacker. * * Process Hacker is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Process Hacker 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Process Hacker. If not, see . */ using System; using System.Collections.Generic; using System.Text; namespace ProcessHacker.PE { /// /// Specifies an image file's attributes. /// [Flags] public enum ImageCharacteristics : ushort { /// /// Image only, Windows CE, and Windows NT® and later. This indicates that the file does /// not contain base relocations and must therefore be loaded at its preferred base address. /// If the base address is not available, the loader reports an error. The default behavior /// of the linker is to strip base relocations from executable (EXE) files. /// RelocsStripped = 0x0001, /// /// Image only. This indicates that the image file is valid and can be run. If this flag /// is not set, it indicates a linker error. /// ExecutableImage = 0x0002, /// /// COFF line numbers have been removed. This flag is deprecated and should be zero. /// LineNumsStripped = 0x0004, /// /// COFF symbol table entries for local symbols have been removed. This flag is deprecated /// and should be zero. /// LocalSymsStripped = 0x0008, /// /// Obsolete. Aggressively trim working set. This flag is deprecated for Windows 2000 and later /// and must be zero. /// AggressiveWsTrim = 0x0010, /// /// Application can handle > 2 GB addresses. /// LargeAddressAware = 0x0020, /// /// This flag is reserved for future use. /// Reserved = 0x0040, /// /// Little endian: the least significant bit (LSB) precedes the most significant bit (MSB) in /// memory. This flag is deprecated and should be zero. /// BytesReversedLo = 0x0080, /// /// Machine is based on a 32-bit-word architecture. /// ThirtyTwoBitMachine = 0x0100, /// /// Debugging information is removed from the image file. /// DebugStripped = 0x0200, /// /// If the image is on removable media, fully load it and copy it to the swap file. /// RemovableRunFromSwap = 0x0400, /// /// If the image is on network media, fully load it and copy it to the swap file. /// NetRunFromSwap = 0x0800, /// /// The image file is a system file, not a user program. /// System = 0x1000, /// /// The image file is a dynamic-link library (DLL). Such files are considered /// executable files for almost all purposes, although they cannot be directly run. /// DLL = 0x2000, /// /// The file should be run only on a uniprocessor machine. /// UPSystemOnly = 0x4000, /// /// Big endian: the MSB precedes the LSB in memory. This flag is deprecated and should be zero. /// BytesReversedHi = 0x8000 } }