diff options
author | Jackson Harper <jackson@novell.com> | 2003-02-18 10:18:00 +0300 |
---|---|---|
committer | Jackson Harper <jackson@novell.com> | 2003-02-18 10:18:00 +0300 |
commit | a9e1f121add77c06b156214de83c764c31d07df3 (patch) | |
tree | 092034d059d79241e6e91032cdddbd941e3bf4e8 /mcs/class/Mono.PEToolkit/COFFHeader.cs | |
parent | 5f7d8d9976ed5ac0e347df27596efa02b7259ce6 (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.cs | 151 |
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();
}
-
-
}
}
+
|