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:
authorJackson Harper <jackson@novell.com>2003-02-18 10:18:00 +0300
committerJackson Harper <jackson@novell.com>2003-02-18 10:18:00 +0300
commita9e1f121add77c06b156214de83c764c31d07df3 (patch)
tree092034d059d79241e6e91032cdddbd941e3bf4e8 /mcs/class/Mono.PEToolkit/COFFHeader.cs
parent5f7d8d9976ed5ac0e347df27596efa02b7259ce6 (diff)
* COFFHeader.cs: Convert to class, use Read and Write methods.
Compress some code * CheckSum.cs: Access Lfanew through property not field. * CorHeader.cs: Convert to class, use Read and Write methods. * DOSHeader.cs: Convert to class, use Read and Write methods, and Init method for creating new DOSHeaders * DataDir.cs: Convert to class, use Read and Write methods. * Image.cs: Access lfanew through property, add Write method. * PEHeader.cs: Convert to class, use Read and Write methods. * PEUtils.cs: Add GetString method for converting byte pointers to strings. * RVA.cs: Add Write method * Section.cs: Use PEUtils.GetString method instead of new string (byte*) * makefuile.gnu: Compile all the files I want compiled ;-) svn path=/trunk/mcs/; revision=11683
Diffstat (limited to 'mcs/class/Mono.PEToolkit/COFFHeader.cs')
-rw-r--r--mcs/class/Mono.PEToolkit/COFFHeader.cs151
1 files changed, 50 insertions, 101 deletions
diff --git a/mcs/class/Mono.PEToolkit/COFFHeader.cs b/mcs/class/Mono.PEToolkit/COFFHeader.cs
index 56c08727411..76adbf6adbd 100644
--- a/mcs/class/Mono.PEToolkit/COFFHeader.cs
+++ b/mcs/class/Mono.PEToolkit/COFFHeader.cs
@@ -8,60 +8,31 @@ using System.Runtime.InteropServices;
namespace Mono.PEToolkit {
- /// <summary>
- /// IMAGE_FILE_HEADER
- /// </summary>
- [StructLayoutAttribute(LayoutKind.Sequential)]
- public struct COFFHeader {
+ public class COFFHeader {
- internal MachineId machine;
- internal short sections;
- internal uint tdStampRaw;
- internal uint symTabPtr;
- internal uint numSymbols;
- internal short optHeaderSize;
- internal Characteristics characteristics;
+ private MachineId machine;
+ private short sections;
+ private uint tdStampRaw;
+ private uint symTabPtr;
+ private uint numSymbols;
+ private short optHeaderSize;
+ private Characteristics characteristics;
-
-
- /// <summary>
- /// Machine identifier.
- /// </summary>
public MachineId Machine {
- get {
- return machine;
- }
- set {
- machine = value;
- }
+ get { return machine; }
+ set { machine = value; }
}
-
- /// <summary>
- /// </summary>
public short NumberOfSections {
- get {
- return sections;
- }
- set {
- sections = value;
- }
+ get { return sections; }
+ set { sections = value; }
}
-
- /// <summary>
- /// </summary>
public uint TimeDateStamp {
- get {
- return tdStampRaw;
- }
- set {
- tdStampRaw = value;
- }
+ get { return tdStampRaw; }
+ set { tdStampRaw = value; }
}
- /// <summary>
- /// </summary>
public DateTime TimeStamp {
get {
return (new DateTime(1970, 1, 1) +
@@ -69,83 +40,62 @@ namespace Mono.PEToolkit {
}
}
-
- /// <summary>
- /// </summary>
public uint PointerToSymbolTable {
- get {
- return symTabPtr;
- }
- set {
- symTabPtr = value;
- }
+ get { return symTabPtr; }
+ set { symTabPtr = value; }
}
-
- /// <summary>
- /// </summary>
public uint NumberOfSymbols {
- get {
- return numSymbols;
- }
- set {
- numSymbols = value;
- }
+ get { return numSymbols; }
+ set { numSymbols = value; }
}
-
- /// <summary>
- /// </summary>
public short SizeOfOptionalHeader {
- get {
- return optHeaderSize;
- }
- set {
- optHeaderSize = value;
- }
+ get { return optHeaderSize; }
+ set { optHeaderSize = value; }
}
-
- /// <summary>
- /// </summary>
public Characteristics Characteristics {
- get {
- return characteristics;
- }
- set {
- characteristics = value;
- }
+ 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));
- }
+ public void Read (BinaryReader reader)
+ {
+ machine = (MachineId) reader.ReadUInt16 ();
+ sections = reader.ReadInt16 ();
+ tdStampRaw = reader.ReadUInt32 ();
+ symTabPtr = reader.ReadUInt32 ();
+ numSymbols = reader.ReadUInt32 ();
+ optHeaderSize = reader.ReadInt16 ();
+ characteristics = (Characteristics) reader.ReadUInt16 ();
}
+ public void Write (BinaryWriter writer)
+ {
+ writer.Write ((ushort)machine);
+ writer.Write (sections);
+ writer.Write (tdStampRaw);
+ writer.Write (symTabPtr);
+ writer.Write (numSymbols);
+ writer.Write (optHeaderSize);
+ writer.Write ((ushort)characteristics);
+ }
- /// <summary>
- /// </summary>
- /// <param name="writer"></param>
public void Dump(TextWriter writer)
{
+
writer.WriteLine(
- "Machine ID : {0}" + Environment.NewLine +
+ "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") + ")"
+ "Characteristics : {2}" + Environment.NewLine +
+ "timestamp : {3}" + Environment.NewLine
+ ,machine, sections, (ushort)characteristics,
+ TimeStamp + " (" + tdStampRaw.ToString("X") + ")"
);
- }
+
+ }
- /// <summary>
- /// </summary>
- /// <returns></returns>
public override string ToString()
{
StringWriter sw = new StringWriter();
@@ -153,7 +103,6 @@ namespace Mono.PEToolkit {
return sw.ToString();
}
-
-
}
}
+