Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel de Icaza <miguel@gnome.org>2002-09-17 05:18:57 +0400
committerMiguel de Icaza <miguel@gnome.org>2002-09-17 05:18:57 +0400
commit9b1aad2b6fcc31dbec9c65a2424eceedb7e5364c (patch)
tree7aaec6525e9cd7d1c28ae81b84534cd199f864fa /mcs/class/Mono.PEToolkit/COFFHeader.cs
parent501655c80dcc5c0593f07fe2657c778dc336018d (diff)
Add Sergey Chaban's Mono.PEToolkit
svn path=/trunk/mcs/; revision=7542
Diffstat (limited to 'mcs/class/Mono.PEToolkit/COFFHeader.cs')
-rw-r--r--mcs/class/Mono.PEToolkit/COFFHeader.cs159
1 files changed, 159 insertions, 0 deletions
diff --git a/mcs/class/Mono.PEToolkit/COFFHeader.cs b/mcs/class/Mono.PEToolkit/COFFHeader.cs
new file mode 100644
index 00000000000..56c08727411
--- /dev/null
+++ b/mcs/class/Mono.PEToolkit/COFFHeader.cs
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2002 Sergey Chaban <serge@wildwestsoftware.com>
+ */
+
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+
+namespace Mono.PEToolkit {
+
+ /// <summary>
+ /// IMAGE_FILE_HEADER
+ /// </summary>
+ [StructLayoutAttribute(LayoutKind.Sequential)]
+ public struct COFFHeader {
+
+ internal MachineId machine;
+ internal short sections;
+ internal uint tdStampRaw;
+ internal uint symTabPtr;
+ internal uint numSymbols;
+ internal short optHeaderSize;
+ internal Characteristics characteristics;
+
+
+
+ /// <summary>
+ /// Machine identifier.
+ /// </summary>
+ public MachineId Machine {
+ get {
+ return machine;
+ }
+ set {
+ machine = value;
+ }
+ }
+
+
+ /// <summary>
+ /// </summary>
+ public short NumberOfSections {
+ get {
+ return sections;
+ }
+ set {
+ sections = value;
+ }
+ }
+
+
+ /// <summary>
+ /// </summary>
+ public uint TimeDateStamp {
+ get {
+ return tdStampRaw;
+ }
+ set {
+ tdStampRaw = value;
+ }
+ }
+
+ /// <summary>
+ /// </summary>
+ public DateTime TimeStamp {
+ get {
+ return (new DateTime(1970, 1, 1) +
+ TimeSpan.FromSeconds(tdStampRaw)).ToLocalTime();
+ }
+ }
+
+
+ /// <summary>
+ /// </summary>
+ public uint PointerToSymbolTable {
+ get {
+ return symTabPtr;
+ }
+ set {
+ symTabPtr = value;
+ }
+ }
+
+
+ /// <summary>
+ /// </summary>
+ public uint NumberOfSymbols {
+ get {
+ return numSymbols;
+ }
+ set {
+ numSymbols = value;
+ }
+ }
+
+
+ /// <summary>
+ /// </summary>
+ public short SizeOfOptionalHeader {
+ get {
+ return optHeaderSize;
+ }
+ set {
+ optHeaderSize = value;
+ }
+ }
+
+
+ /// <summary>
+ /// </summary>
+ public Characteristics Characteristics {
+ get {
+ return characteristics;
+ }
+ set {
+ characteristics = value;
+ }
+ }
+
+
+ /// <summary>
+ /// </summary>
+ unsafe public void Read(BinaryReader reader) {
+ fixed (void* pThis = &this) {
+ PEUtils.ReadStruct(reader, pThis, sizeof (COFFHeader), typeof (COFFHeader));
+ }
+ }
+
+
+ /// <summary>
+ /// </summary>
+ /// <param name="writer"></param>
+ public void Dump(TextWriter writer)
+ {
+ writer.WriteLine(
+ "Machine ID : {0}" + Environment.NewLine +
+ "Sections : {1}" + Environment.NewLine +
+ "timestamp : {2}" + Environment.NewLine +
+ "Characteristics : {3}" + Environment.NewLine,
+ machine, sections,
+ TimeStamp + " (" + tdStampRaw.ToString("X") + ")",
+ characteristics + " (0x" + characteristics.ToString("X") + ")"
+ );
+ }
+
+ /// <summary>
+ /// </summary>
+ /// <returns></returns>
+ public override string ToString()
+ {
+ StringWriter sw = new StringWriter();
+ Dump(sw);
+ return sw.ToString();
+ }
+
+
+
+ }
+}