public NtfsDiskStream(Stream diskStream, bool ownsStream, List <DataFragment> fragments, uint bytesPrCluster, ushort compressionClusterCount, long length) { _diskStream = diskStream; _ownsStream = ownsStream; _bytesPrCluster = bytesPrCluster; _compressionClusterCount = compressionClusterCount; _fragments = Utility.Util.Sort(fragments, new DataFragmentComparer()); _length = length; _position = 0; if (compressionClusterCount != 0) { _compressor = new LZNT1(); _compressor.BlockSize = (int)_bytesPrCluster; } long vcn = 0; bool hasCompression = false; for (int i = 0; i < _fragments.Count; i++) { if (_fragments[i].IsCompressed) { hasCompression = true; } // Debug.Assert(_fragments[i].StartingVCN == vcn); vcn += _fragments[i].Clusters + _fragments[i].CompressedClusters; } //if (_compressionClusterCount == 0) // Debug.Assert(!hasCompression); }
public NtfsDiskStream(Stream diskStream, bool ownsStream, DataFragment[] fragments, uint bytesPrCluster, ushort compressionClusterCount, long length) { _diskStream = diskStream; _ownsStream = ownsStream; _bytesPrCluster = bytesPrCluster; _compressionClusterCount = compressionClusterCount; _fragments = fragments.OrderBy(s => s.StartingVCN).ToArray(); _length = length; _position = 0; if (compressionClusterCount != 0) { _compressor = new LZNT1(); _compressor.BlockSize = (int)_bytesPrCluster; } long vcn = 0; bool hasCompression = false; for (int i = 0; i < _fragments.Length; i++) { if (_fragments[i].IsCompressed) { hasCompression = true; } Debug.Assert(_fragments[i].StartingVCN == vcn); vcn += _fragments[i].Clusters + _fragments[i].CompressedClusters; } if (_compressionClusterCount == 0) { Debug.Assert(!hasCompression); } }