void WriteResourceDataEntry(ResourceDataEntry rde)
        {
            GotoOffset(rde.Offset);

            m_writer.Write(0);
            m_writer.Write((uint)rde.ResourceData.Length);
            m_writer.Write(rde.Codepage);
            m_writer.Write(rde.Reserved);

            m_writer.BaseStream.Position = rde.Data;
            m_writer.Write(rde.ResourceData);

            RestoreOffset();
        }
        ResourceNode ReadDataEntry()
        {
            ResourceDataEntry rde = new ResourceDataEntry(GetOffset());

            rde.Data     = m_reader.ReadUInt32();
            rde.Size     = m_reader.ReadUInt32();
            rde.Codepage = m_reader.ReadUInt32();
            rde.Reserved = m_reader.ReadUInt32();

            Section sect = m_img.GetSectionAtVirtualAddress(rde.Data);

            byte [] data = new byte [rde.Size];
            Buffer.BlockCopy(sect.Data, (int)(long)(rde.Data - sect.VirtualAddress), data, 0, (int)rde.Size);
            rde.ResourceData = data;

            return(rde);
        }