/// <exception cref="IOException">Error reading from the stream.</exception> internal static unsafe NativeHeapMemoryBlock ReadMemoryBlockNoLock(Stream stream, long start, int size) { var block = new NativeHeapMemoryBlock(size); bool fault = true; try { stream.Seek(start, SeekOrigin.Begin); int bytesRead = 0; if ((bytesRead = stream.Read(block.Pointer, size)) != size) { stream.CopyTo(block.Pointer + bytesRead, size - bytesRead); } fault = false; } finally { if (fault) { block.Dispose(); } } return(block); }
internal static unsafe NativeHeapMemoryBlock ReadMemoryBlockNoLock(Stream stream, bool isFileStream, long start, int size) { var block = new NativeHeapMemoryBlock(size); bool fault = true; try { stream.Seek(start, SeekOrigin.Begin); if (!isFileStream || !FileStreamReadLightUp.TryReadFile(stream, block.Pointer, start, size)) { stream.CopyTo(block.Pointer, size); } fault = false; } finally { if (fault) { block.Dispose(); } } return(block); }
internal static unsafe NativeHeapMemoryBlock ReadMemoryBlockNoLock(Stream stream, bool isFileStream, long start, int size) { var block = new NativeHeapMemoryBlock(size); bool fault = true; try { stream.Seek(start, SeekOrigin.Begin); if (!isFileStream || !FileStreamReadLightUp.TryReadFile(stream, block.Pointer, start, size)) { stream.CopyTo(block.Pointer, size); } fault = false; } finally { if (fault) { block.Dispose(); } } return block; }