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); } }
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; }