private ushort?GetFileRecordSegmentSequenceNumber(long segmentNumber) { byte[] segmentBytes = GetFileRecordSegmentBytes(segmentNumber); if (FileRecordSegment.ContainsFileRecordSegment(segmentBytes)) { return(FileRecordSegment.GetSequenceNumber(segmentBytes)); } return(null); }
private FileRecordSegment GetFileRecordSegment(long segmentNumber) { NTFSBootRecord bootRecord = m_volume.BootRecord; // Note: File record always start at the beginning of a sector // Note: Record can span multiple clusters, or alternatively, several records can be stored in the same cluster long firstSectorIndex = segmentNumber * m_volume.SectorsPerFileRecordSegment; byte[] segmentBytes = m_mftFile.Data.ReadSectors(firstSectorIndex, m_volume.SectorsPerFileRecordSegment); if (FileRecordSegment.ContainsFileRecordSegment(segmentBytes)) { FileRecordSegment recordSegment = new FileRecordSegment(segmentBytes, 0, segmentNumber); return(recordSegment); } else { return(null); } }