Esempio n. 1
0
 protected override void DisposeCore()
 {
     if (disposeStream)
     {
         stream?.Dispose();
     }
     stream = null;
 }
Esempio n. 2
0
 void SetUnderlyingStreamCore(HexBufferStream newStream)
 {
     if (stream == newStream)
     {
         return;
     }
     UnregisterEvents();
     stream?.Dispose();
     stream = newStream;
     RegisterEvents();
     InvalidateAll();
     UnderlyingStreamChanged?.Invoke(this, EventArgs.Empty);
 }
Esempio n. 3
0
        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();
            }
        }