protected override IList <IStructuralNode> CreateChildNodes()
        {
            var nameEntryCount = _provider.Data.Read <ushort>(_offset + 12);
            var idEntryCount   = _provider.Data.Read <ushort>(_offset + 14);

            var result = new IStructuralNode[nameEntryCount + idEntryCount + 1];

            result[0] = new TemplatedStructuralNode(_provider.Data, this, "Header", PETemplates.ResourceDirectoryHeader, _offset);

            var offset = _offset + PETemplates.ResourceDirectoryHeader.Width;
            var index  = 1;

            for (var i = 0; i < nameEntryCount; i++)
            {
                result[index++] = new ResourceDirectoryEntryNode(_provider, this, _resourceBase, offset, true, _depth);
                offset         += 8;
            }

            for (var i = 0; i < idEntryCount; i++)
            {
                result[index++] = new ResourceDirectoryEntryNode(_provider, this, _resourceBase, offset, false, _depth);
                offset         += 8;
            }

            return(result);
        }
Esempio n. 2
0
 public TableStreamNode(PEStructuralNodeProvider provider, IStructuralNode parent, string name, long offset, long length)
     : base(parent)
 {
     _provider = provider;
     Name      = name;
     ByteRange = new ByteRange(offset, length);
 }
 public ResourceDirectoryNode(PEStructuralNodeProvider provider, IStructuralNode parent, long resourceBase, long offset, int depth)
     : base(parent)
 {
     _provider     = provider;
     _resourceBase = resourceBase;
     _offset       = offset;
     _depth        = depth;
 }
Esempio n. 4
0
        protected override IList <IStructuralNode> CreateChildNodes()
        {
            var result         = new IStructuralNode[_provider.PESectionCount];
            var startingOffset = _provider.PESectionTableOffset;

            for (var i = 0; i < result.Length; i++)
            {
                result[i]       = new PESection(this, _provider, startingOffset);
                startingOffset += Constants.Section_Length;
            }

            return(result);
        }
        public TemplatedStructuralNode(IDataSource data, IStructuralNode parent, string name, IStructuralNodeTemplate template, long offset)
            : base(parent)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (template == null)
            {
                throw new ArgumentNullException(nameof(template));
            }

            _data     = data;
            Name      = name;
            _template = template;
            _offset   = offset;
        }
Esempio n. 6
0
 public StreamHeaderListNode(PEStructuralNodeProvider provider, IStructuralNode parent)
     : base(parent)
 {
     _provider = provider;
 }
Esempio n. 7
0
 public PESectionList(PEStructuralNodeProvider provider, IStructuralNode parent)
     : base(parent)
 {
     _provider = provider;
 }
Esempio n. 8
0
 public NotificationNode(IDataSource data, IStructuralNode parent, IReadOnlyList <Notification> notifications)
     : base(parent)
 {
     _data          = data;
     _notifications = notifications;
 }
Esempio n. 9
0
 protected LazyStructuralNode(IStructuralNode parent)
 {
     Parent = parent;
 }
Esempio n. 10
0
 public PESection(IStructuralNode parent, PEStructuralNodeProvider provider, int offset)
     : base(parent)
 {
     _provider           = provider;
     _tableReccordOffset = offset;
 }
Esempio n. 11
0
 public MetaDataRootNode(PEStructuralNodeProvider provider, IStructuralNode parent, int length)
     : base(parent)
 {
     _provider = provider;
     ByteRange = new Range(_provider.MetaDataOffset, length);
 }