protected override void DisposeCore() { if (disposeStream) { simpleStream?.Dispose(); } simpleStream = null; }
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(); } }