コード例 #1
0
 private ushort?GetFileRecordSegmentSequenceNumber(long segmentNumber)
 {
     byte[] segmentBytes = GetFileRecordSegmentBytes(segmentNumber);
     if (FileRecordSegment.ContainsFileRecordSegment(segmentBytes))
     {
         return(FileRecordSegment.GetSequenceNumber(segmentBytes));
     }
     return(null);
 }
コード例 #2
0
        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);
            }
        }