Exemple #1
0
        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);
            }
        }
Exemple #2
0
            public void SizeChanged(FATBFrame.FileAllocationTableEntry fateEntry)
            {
                int end = fateEntry.End;

                while (end % 4 != 0)
                {
                    ++end;
                }
                Start = end;
            }