public void Corrupt(NativeMappedFileByteProvider prov, long start, long end)
        {
            try
            {
                prov.DisableByteWritten(true);
                long   total_length = end - start;
                long   chunks       = total_length / CHUNK_LENGTH;
                long   remaining    = total_length % CHUNK_LENGTH;
                var    generator    = GetGenerator();
                byte[] temp_chunk   = new byte[CHUNK_LENGTH];

                for (long chunk = 0; chunk < chunks; ++chunk)
                {
                    long ofs = start + (chunk * CHUNK_LENGTH);
                    // No point reading chunk if we're just going to overwrite it.
                    byte[] data = _op == CorruptSectionOperation.Overwrite ? temp_chunk : prov.ReadBytes(ofs, CHUNK_LENGTH);
                    ApplyOperationToArray(data, generator, _op);
                    prov.WriteBytes(ofs, data);
                }

                if (remaining > 0)
                {
                    long   ofs  = start + (chunks * CHUNK_LENGTH);
                    byte[] data = _op == CorruptSectionOperation.Overwrite ? temp_chunk : prov.ReadBytes(ofs, (int)remaining);
                    ApplyOperationToArray(data, generator, _op);
                    prov.WriteBytes(ofs, data);
                }
            }
            finally
            {
                prov.DisableByteWritten(false);
            }
        }
Ejemplo n.º 2
0
        private SectionEditorForm(NativeMappedFile map, bool readOnly)
        {
            _random   = new Random();
            _map      = map;
            _readOnly = readOnly;
            _prov     = new NativeMappedFileByteProvider(_map, _readOnly);

            InitializeComponent();
            if (_readOnly)
            {
                corruptToolStripMenuItem.Visible      = false;
                loadFromFileToolStripMenuItem.Visible = false;
            }

            hexBox.ByteProvider = _prov;

            Disposed += SectionEditorForm_Disposed;
        }
        private SectionEditorForm(NtMappedSection map, bool readOnly)
        {
            _random = new Random();
            _map = map;
            _readOnly = readOnly;
            _prov = new NativeMappedFileByteProvider(_map, _readOnly);            

            InitializeComponent();
            if (_readOnly)
            {
                corruptToolStripMenuItem.Visible = false;
                loadFromFileToolStripMenuItem.Visible = false;
            }

            hexBox.ByteProvider = _prov;

            Disposed += SectionEditorForm_Disposed;
        }
        private SectionEditorForm(NtMappedSection map, bool readOnly, long length)
        {
            _random            = new Random();
            _map               = map;
            _readOnly          = readOnly;
            _prov              = new NativeMappedFileByteProvider(_map, _readOnly, length);
            _prov.ByteWritten += _prov_ByteWritten;

            InitializeComponent();
            if (_readOnly)
            {
                corruptToolStripMenuItem.Visible      = false;
                loadFromFileToolStripMenuItem.Visible = false;
            }

            loadFromFileToolStripMenuItem.Enabled = !_readOnly;
            toolStripButtonLoad.Enabled           = !_readOnly;
            hexBox.ByteProvider = _prov;
            InitDataInspectors();
            UpdateDataInspectors();

            Disposed += SectionEditorForm_Disposed;
        }