private void WriteModuleImportEntry(IBinaryStreamWriter writer, IImportedModule module)
 {
     WriteModuleImportEntry(writer,
                            GetModuleThunkTable(module).Rva,
                            module.TimeDateStamp,
                            module.ForwarderChain,
                            HintNameTable.GetModuleNameRva(module),
                            ImportAddressDirectory.GetModuleThunkTable(module).Rva);
 }
        /// <inheritdoc />
        public override void AddModule(IImportedModule module)
        {
            if (_entriesLength == 0)
            {
                _entriesLength = SerializedImportedModule.ModuleImportSize;
            }

            _entriesLength += SerializedImportedModule.ModuleImportSize;

            ImportAddressDirectory.AddModule(module);
            base.AddModule(module);

            HintNameTable.AddModule(module);
        }
        /// <inheritdoc />
        public override void UpdateOffsets(ulong newOffset, uint newRva)
        {
            base.UpdateOffsets(newOffset, newRva);

            newOffset += _entriesLength;
            newRva    += _entriesLength;

            foreach (var module in Modules)
            {
                var  thunkTable = GetModuleThunkTable(module);
                uint size       = thunkTable.GetPhysicalSize();
                thunkTable.UpdateOffsets(newOffset, newRva);
                newOffset += size;
                newRva    += size;
            }

            HintNameTable.UpdateOffsets(newOffset, newRva);
        }
 public virtual void VisitHintNameTable(HintNameTable hnt)
 {
 }
Example #5
0
 public virtual void VisitHintNameTable(HintNameTable hnt)
 {
 }
 /// <inheritdoc />
 public override void Write(IBinaryStreamWriter writer)
 {
     WriteModuleImportEntries(writer);
     base.Write(writer);
     HintNameTable.Write(writer);
 }
 /// <inheritdoc />
 public override uint GetPhysicalSize() => _entriesLength + base.GetPhysicalSize() + HintNameTable.GetPhysicalSize();