Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
PEHeaderBuilder.cs
Go to the documentation of this file.
2
4
5public sealed class PEHeaderBuilder
6{
7 public Machine Machine { get; }
8
10
11 public byte MajorLinkerVersion { get; }
12
13 public byte MinorLinkerVersion { get; }
14
15 public ulong ImageBase { get; }
16
17 public int SectionAlignment { get; }
18
19 public int FileAlignment { get; }
20
21 public ushort MajorOperatingSystemVersion { get; }
22
23 public ushort MinorOperatingSystemVersion { get; }
24
25 public ushort MajorImageVersion { get; }
26
27 public ushort MinorImageVersion { get; }
28
29 public ushort MajorSubsystemVersion { get; }
30
31 public ushort MinorSubsystemVersion { get; }
32
33 public Subsystem Subsystem { get; }
34
36
37 public ulong SizeOfStackReserve { get; }
38
39 public ulong SizeOfStackCommit { get; }
40
41 public ulong SizeOfHeapReserve { get; }
42
43 public ulong SizeOfHeapCommit { get; }
44
45 internal bool Is32Bit
46 {
47 get
48 {
49 if (Machine != Machine.Amd64 && Machine != Machine.IA64)
50 {
51 return Machine != Machine.Arm64;
52 }
53 return false;
54 }
55 }
56
57 public PEHeaderBuilder(Machine machine = Machine.Unknown, int sectionAlignment = 8192, int fileAlignment = 512, ulong imageBase = 4194304uL, byte majorLinkerVersion = 48, byte minorLinkerVersion = 0, ushort majorOperatingSystemVersion = 4, ushort minorOperatingSystemVersion = 0, ushort majorImageVersion = 0, ushort minorImageVersion = 0, ushort majorSubsystemVersion = 4, ushort minorSubsystemVersion = 0, Subsystem subsystem = Subsystem.WindowsCui, DllCharacteristics dllCharacteristics = DllCharacteristics.DynamicBase | DllCharacteristics.NxCompatible | DllCharacteristics.NoSeh | DllCharacteristics.TerminalServerAware, Characteristics imageCharacteristics = Characteristics.Dll, ulong sizeOfStackReserve = 1048576uL, ulong sizeOfStackCommit = 4096uL, ulong sizeOfHeapReserve = 1048576uL, ulong sizeOfHeapCommit = 4096uL)
58 {
59 if (fileAlignment < 512 || fileAlignment > 65536 || BitArithmetic.CountBits(fileAlignment) != 1)
60 {
61 Throw.ArgumentOutOfRange("fileAlignment");
62 }
63 if (sectionAlignment < fileAlignment || BitArithmetic.CountBits(sectionAlignment) != 1)
64 {
65 Throw.ArgumentOutOfRange("sectionAlignment");
66 }
67 Machine = machine;
68 SectionAlignment = sectionAlignment;
69 FileAlignment = fileAlignment;
70 ImageBase = imageBase;
71 MajorLinkerVersion = majorLinkerVersion;
72 MinorLinkerVersion = minorLinkerVersion;
73 MajorOperatingSystemVersion = majorOperatingSystemVersion;
74 MinorOperatingSystemVersion = minorOperatingSystemVersion;
75 MajorImageVersion = majorImageVersion;
76 MinorImageVersion = minorImageVersion;
77 MajorSubsystemVersion = majorSubsystemVersion;
78 MinorSubsystemVersion = minorSubsystemVersion;
79 Subsystem = subsystem;
80 DllCharacteristics = dllCharacteristics;
81 ImageCharacteristics = imageCharacteristics;
82 SizeOfStackReserve = sizeOfStackReserve;
83 SizeOfStackCommit = sizeOfStackCommit;
84 SizeOfHeapReserve = sizeOfHeapReserve;
85 SizeOfHeapCommit = sizeOfHeapCommit;
86 }
87
89 {
90 return new PEHeaderBuilder(Machine.Unknown, 8192, 512, 4194304uL, 48, 0, 4, 0, 0, 0, 4, 0, Subsystem.WindowsCui, DllCharacteristics.DynamicBase | DllCharacteristics.NxCompatible | DllCharacteristics.NoSeh | DllCharacteristics.TerminalServerAware, Characteristics.ExecutableImage, 1048576uL, 4096uL, 1048576uL, 4096uL);
91 }
92
94 {
95 return new PEHeaderBuilder(Machine.Unknown, 8192, 512, 4194304uL, 48, 0, 4, 0, 0, 0, 4, 0, Subsystem.WindowsCui, DllCharacteristics.DynamicBase | DllCharacteristics.NxCompatible | DllCharacteristics.NoSeh | DllCharacteristics.TerminalServerAware, Characteristics.ExecutableImage | Characteristics.Dll, 1048576uL, 4096uL, 1048576uL, 4096uL);
96 }
97
98 internal int ComputeSizeOfPEHeaders(int sectionCount)
99 {
100 return PEBuilder.DosHeaderSize + 4 + 20 + PEHeader.Size(Is32Bit) + 40 * sectionCount;
101 }
102}
PEHeaderBuilder(Machine machine=Machine.Unknown, int sectionAlignment=8192, int fileAlignment=512, ulong imageBase=4194304uL, byte majorLinkerVersion=48, byte minorLinkerVersion=0, ushort majorOperatingSystemVersion=4, ushort minorOperatingSystemVersion=0, ushort majorImageVersion=0, ushort minorImageVersion=0, ushort majorSubsystemVersion=4, ushort minorSubsystemVersion=0, Subsystem subsystem=Subsystem.WindowsCui, DllCharacteristics dllCharacteristics=DllCharacteristics.DynamicBase|DllCharacteristics.NxCompatible|DllCharacteristics.NoSeh|DllCharacteristics.TerminalServerAware, Characteristics imageCharacteristics=Characteristics.Dll, ulong sizeOfStackReserve=1048576uL, ulong sizeOfStackCommit=4096uL, ulong sizeOfHeapReserve=1048576uL, ulong sizeOfHeapCommit=4096uL)
static void ArgumentOutOfRange(string parameterName)
Definition Throw.cs:145