示例#1
0
        private void UpdateClusterMap()
        {
            clusterMap = new Dictionary <uint, List <DatabaseFile> >((int)volume.MaxClusters);
            for (uint i = 0; i < volume.MaxClusters; i++)
            {
                clusterMap[i] = new List <DatabaseFile>();
            }

            foreach (var pair in database.GetFiles())
            {
                var databaseFile = pair.Value;

                // We handle active cluster chains conventionally
                if (!databaseFile.IsDeleted)
                {
                    UpdateClusters(databaseFile);
                }
                // Otherwise, we generate an artificial cluster chain
                else
                {
                    // TODO: Add a blocklist setting
                    if (databaseFile.FileName.StartsWith("xdk_data") ||
                        databaseFile.FileName.StartsWith("xdk_file") ||
                        databaseFile.FileName.StartsWith("tempcda"))
                    {
                        // These are usually always large and/or corrupted
                        // TODO: still don't really know what these files are
                        continue;
                    }

                    UpdateClusters(databaseFile);
                }
            }
        }