| File: System\Reflection\PortableExecutable\CoffHeader.cs | Web Access |
| Project: src\runtime\src\libraries\System.Reflection.Metadata\src\System.Reflection.Metadata.csproj (System.Reflection.Metadata) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Reflection.PortableExecutable { public sealed class CoffHeader { /// <summary> /// The type of target machine. /// </summary> public Machine Machine { get; } /// <summary> /// The number of sections. This indicates the size of the section table, which immediately follows the headers. /// </summary> public short NumberOfSections { get; } /// <summary> /// The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. /// </summary> public int TimeDateStamp { get; } /// <summary> /// The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. /// This value should be zero for a PE image. /// </summary> public int PointerToSymbolTable { get; } /// <summary> /// The number of entries in the symbol table. This data can be used to locate the string table, /// which immediately follows the symbol table. This value should be zero for a PE image. /// </summary> public int NumberOfSymbols { get; } /// <summary> /// The size of the optional header, which is required for executable files but not for object files. /// This value should be zero for an object file. /// </summary> public short SizeOfOptionalHeader { get; } /// <summary> /// The flags that indicate the attributes of the file. /// </summary> public Characteristics Characteristics { get; } internal const int Size = sizeof(short) + // Machine sizeof(short) + // NumberOfSections sizeof(int) + // TimeDateStamp: sizeof(int) + // PointerToSymbolTable sizeof(int) + // NumberOfSymbols sizeof(short) + // SizeOfOptionalHeader: sizeof(ushort); // Characteristics internal CoffHeader(ref PEBinaryReader reader) { Machine = (Machine)reader.ReadUInt16(); NumberOfSections = reader.ReadInt16(); TimeDateStamp = reader.ReadInt32(); PointerToSymbolTable = reader.ReadInt32(); NumberOfSymbols = reader.ReadInt32(); SizeOfOptionalHeader = reader.ReadInt16(); Characteristics = (Characteristics)reader.ReadUInt16(); } } }