Ejemplo n.º 1
0
        private bool DeleteInternal(Folder f, ref long progressUpdate, ref long progressMax, ref string CurrentFile)
        {
            uint[] Occupied = f.BlocksOccupied;
            //Set the max progress
            progressMax = Occupied.Length;
            foreach (File g in f.Files(false))
            {
                progressMax += (uint)g.BlocksOccupied.Length;
            }
            foreach (Folder g in f.SubFolders(false))
            {
                progressMax += (uint)g.BlocksOccupied.Length;
            }
            //Set progress update
            progressUpdate = 0;
            //Mark the blocks as empty
            ClearFATChain(Occupied, f);
             progressUpdate++;

            foreach (Folder g in f.SubFolders(false))
            {
                DeleteInternal(g, ref progressUpdate, ref progressMax, ref CurrentFile);
            }

            foreach (File g in f.Files(false))
            {
                ClearFATChain(g.BlocksOccupied, g);
                progressUpdate++;
            }

            return true;
        }