public override void Write(WritingContext context) { var writer = context.Writer; writer.WriteUInt32(Cb); writer.WriteUInt16(MajorRuntimeVersion); writer.WriteUInt16(MinorRuntimeVersion); MetadataDirectory.Write(context); writer.WriteUInt32((uint)Flags); writer.WriteUInt32(EntryPointToken); ResourcesDirectory.Write(context); StrongNameSignatureDirectory.Write(context); CodeManagerTableDirectory.Write(context); VTableFixupsDirectory.Write(context); ExportAddressTableJumpsDirectory.Write(context); ManagedNativeHeaderDirectory.Write(context); }
/// <inheritdoc /> protected override VTableFixupsDirectory GetVTableFixups() { if (!_vtableFixupsDirectory.IsPresentInPE) { return(null); } if (!_context.File.TryCreateDataDirectoryReader(_vtableFixupsDirectory, out var directoryReader)) { _context.BadImage(".NET data directory contains an invalid VTable fixups directory RVA and/or size."); return(null); } var vtables = new VTableFixupsDirectory(); for (int i = 0; i < directoryReader.Length / 8; i++) { vtables.Add(VTableFixup.FromReader(_context, ref directoryReader)); } return(vtables); }