protected override void DisposeCore() { if (disposeStream) { stream?.Dispose(); } stream = null; }
void SetUnderlyingStreamCore(HexBufferStream newStream) { if (stream == newStream) { return; } UnregisterEvents(); stream?.Dispose(); stream = newStream; RegisterEvents(); InvalidateAll(); UnderlyingStreamChanged?.Invoke(this, EventArgs.Empty); }
public override void Read(IntPtr hProcess, HexPosition position, byte[] destination, long destinationIndex, long length) { if (hProcess == IntPtr.Zero) { throw new ArgumentException(); } if (position >= HexPosition.MaxEndPosition) { throw new ArgumentOutOfRangeException(nameof(position)); } if (destination == null) { throw new ArgumentNullException(nameof(destination)); } if (destinationIndex < 0) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } if (length < 0) { throw new ArgumentOutOfRangeException(nameof(length)); } if (new HexPosition(destinationIndex) + length > destination.LongLength) { throw new ArgumentOutOfRangeException(nameof(length)); } HexSimpleBufferStream processStream = null; HexBufferStream cachedStream = null; try { processStream = hexBufferStreamFactoryService.CreateSimpleProcessStream(hProcess); cachedStream = hexBufferStreamFactoryService.CreateCached(processStream, disposeStream: false); cachedStream.ReadBytes(position, destination, destinationIndex, length); } finally { processStream?.Dispose(); cachedStream?.Dispose(); } }