예제 #1
0
        private void ResolveFileChain()
        {
            VirtualDiskLayer file = _files[_files.Count - 1].First;

            while (file.NeedsParent)
            {
                bool        foundParent = false;
                FileLocator locator     = file.RelativeFileLocator;

                foreach (string posParent in file.GetParentLocations())
                {
                    if (locator.Exists(posParent))
                    {
                        file = VirtualDisk.OpenDiskLayer(file.RelativeFileLocator, posParent, FileAccess.Read);
                        _files.Add(new ThinkAway.Tuple <VirtualDiskLayer, Ownership>(file, Ownership.Dispose));
                        foundParent = true;
                        break;
                    }
                }

                if (!foundParent)
                {
                    throw new IOException("Parent disk not found");
                }
            }
        }