Esempio n. 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 <FileAllocationTableEntry>();
            FileAllocationTableEntry allocationTableEntry1;

            m_lstfateEntries.Add(allocationTableEntry1 = new FileAllocationTableEntry(brrReader));
            for (int index = num - 1; index > 0; --index)
            {
                FileAllocationTableEntry allocationTableEntry2 = new FileAllocationTableEntry(brrReader);
                if (allocationTableEntry2.Start < allocationTableEntry1.End)
                {
                    throw new FormatException();
                }
                allocationTableEntry1.Changed += new FileAllocationTableEntry.FileSizeChanged(allocationTableEntry2.SizeChanged);
                m_lstfateEntries.Add(allocationTableEntry1 = allocationTableEntry2);
            }
        }
Esempio n. 2
0
            public void SizeChanged(FileAllocationTableEntry fateEntry)
            {
                int end = fateEntry.End;

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