Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Serialize()

void System.Reflection.PortableExecutable.ManagedTextSection.Serialize ( BlobBuilder builder,
int relativeVirtualAddess,
int entryPointTokenOrRelativeVirtualAddress,
CorFlags corFlags,
ulong baseAddress,
BlobBuilder metadataBuilder,
BlobBuilder ilBuilder,
BlobBuilder? mappedFieldDataBuilderOpt,
BlobBuilder? resourceBuilderOpt,
BlobBuilder? debugDataBuilderOpt,
out Blob strongNameSignature )
inline

Definition at line 176 of file ManagedTextSection.cs.

177 {
178 int relativeVirtualAddress = GetImportTableDirectoryEntry(relativeVirtualAddess).RelativeVirtualAddress;
179 int relativeVirtualAddress2 = GetImportAddressTableDirectoryEntry(relativeVirtualAddess).RelativeVirtualAddress;
181 {
182 WriteImportAddressTable(builder, relativeVirtualAddress);
183 }
184 WriteCorHeader(builder, relativeVirtualAddess, entryPointTokenOrRelativeVirtualAddress, corFlags);
185 ilBuilder.Align(4);
186 builder.LinkSuffix(ilBuilder);
187 builder.LinkSuffix(metadataBuilder);
188 if (resourceBuilderOpt != null)
189 {
190 builder.LinkSuffix(resourceBuilderOpt);
191 }
192 strongNameSignature = builder.ReserveBytes(StrongNameSignatureSize);
193 new BlobWriter(strongNameSignature).WriteBytes(0, StrongNameSignatureSize);
194 if (debugDataBuilderOpt != null)
195 {
196 builder.LinkSuffix(debugDataBuilderOpt);
197 }
199 {
200 WriteImportTable(builder, relativeVirtualAddress, relativeVirtualAddress2);
201 WriteNameTable(builder);
202 WriteRuntimeStartupStub(builder, relativeVirtualAddress2, baseAddress);
203 }
204 if (mappedFieldDataBuilderOpt != null)
205 {
206 builder.LinkSuffix(mappedFieldDataBuilderOpt);
207 }
208 }
void LinkSuffix(BlobBuilder suffix)
void WriteCorHeader(BlobBuilder builder, int textSectionRva, int entryPointTokenOrRva, CorFlags corFlags)
void WriteImportTable(BlobBuilder builder, int importTableRva, int importAddressTableRva)
void WriteRuntimeStartupStub(BlobBuilder sectionBuilder, int importAddressTableRva, ulong baseAddress)
void WriteImportAddressTable(BlobBuilder builder, int importTableRva)
unsafe void WriteBytes(byte value, int byteCount)

References System.Reflection.Metadata.BlobBuilder.Align(), System.Reflection.PortableExecutable.ManagedTextSection.GetImportAddressTableDirectoryEntry(), System.Reflection.PortableExecutable.ManagedTextSection.GetImportTableDirectoryEntry(), System.Reflection.Metadata.BlobBuilder.LinkSuffix(), System.Reflection.PortableExecutable.DirectoryEntry.RelativeVirtualAddress, System.Reflection.PortableExecutable.ManagedTextSection.RequiresStartupStub, System.Reflection.Metadata.BlobBuilder.ReserveBytes(), System.Reflection.PortableExecutable.ManagedTextSection.StrongNameSignatureSize, System.Reflection.Metadata.BlobWriter.WriteBytes(), System.Reflection.PortableExecutable.ManagedTextSection.WriteCorHeader(), System.Reflection.PortableExecutable.ManagedTextSection.WriteImportAddressTable(), System.Reflection.PortableExecutable.ManagedTextSection.WriteImportTable(), System.Reflection.PortableExecutable.ManagedTextSection.WriteNameTable(), and System.Reflection.PortableExecutable.ManagedTextSection.WriteRuntimeStartupStub().