public FATBFrame(BinaryReader brrReader, int nSize, params object[] args) { if (nSize < 4 || nSize % 8 != 4) { throw new FormatException(); } int num = brrReader.ReadInt32(); nSize -= 4; if (num < 0 || num * 8 != nSize) { throw new FormatException(); } m_lstfateEntries = new List <FATBFrame.FileAllocationTableEntry>(); FATBFrame.FileAllocationTableEntry allocationTableEntry1; m_lstfateEntries.Add(allocationTableEntry1 = new FATBFrame.FileAllocationTableEntry(brrReader)); for (int index = num - 1; index > 0; --index) { FATBFrame.FileAllocationTableEntry allocationTableEntry2 = new FATBFrame.FileAllocationTableEntry(brrReader); if (allocationTableEntry2.Start < allocationTableEntry1.End) { throw new FormatException(); } allocationTableEntry1.Changed += new FATBFrame.FileAllocationTableEntry.FileSizeChanged(allocationTableEntry2.SizeChanged); m_lstfateEntries.Add(allocationTableEntry1 = allocationTableEntry2); } }
public void SizeChanged(FATBFrame.FileAllocationTableEntry fateEntry) { int end = fateEntry.End; while (end % 4 != 0) { ++end; } Start = end; }