public ICollection <IFileSystemResourceAccessor> GetResources(string rootDirectoryName)
 {
     lock (_syncObj)
     {
         if (_dokanExecutor == null)
         {
             return(null);
         }
         VirtualRootDirectory rootDirectory = _dokanExecutor.GetRootDirectory(rootDirectoryName);
         if (rootDirectory == null)
         {
             return(null);
         }
         return(rootDirectory.ChildResources.Values.Select(resource => resource.ResourceAccessor).ToList());
     }
 }
 public void DisposeRootDirectory(string rootDirectoryName)
 {
     lock (_syncObj)
     {
         if (_dokanExecutor == null)
         {
             return;
         }
         VirtualRootDirectory rootDirectory = _dokanExecutor.GetRootDirectory(rootDirectoryName);
         if (rootDirectory == null)
         {
             return;
         }
         _dokanExecutor.RootDirectory.RemoveResource(rootDirectoryName);
         rootDirectory.Dispose();
     }
 }
 public string AddResource(string rootDirectoryName, IFileSystemResourceAccessor resourceAccessor)
 {
     lock (_syncObj)
     {
         if (_dokanExecutor == null)
         {
             return(null);
         }
         VirtualRootDirectory rootDirectory = _dokanExecutor.GetRootDirectory(rootDirectoryName);
         if (rootDirectory == null)
         {
             return(null);
         }
         string resourceName = resourceAccessor.ResourceName;
         rootDirectory.AddResource(resourceName, !resourceAccessor.IsFile ?
                                   (VirtualFileSystemResource) new VirtualDirectory(resourceName, resourceAccessor) :
                                   new VirtualFile(resourceName, resourceAccessor));
         string mountPoint = _dokanExecutor.MountPoint;
         return(Path.Combine(mountPoint, rootDirectoryName + "\\" + resourceName));
     }
 }
 public string AddResource(string rootDirectoryName, IResourceAccessor resourceAccessor)
 {
     lock (_syncObj)
     {
         if (_dokanExecutor == null)
         {
             return(null);
         }
         VirtualRootDirectory rootDirectory = _dokanExecutor.GetRootDirectory(rootDirectoryName);
         if (rootDirectory == null)
         {
             return(null);
         }
         string resourceName = resourceAccessor.ResourceName;
         IFileSystemResourceAccessor fsra = resourceAccessor as IFileSystemResourceAccessor;
         rootDirectory.AddResource(resourceName, fsra != null && fsra.IsDirectory ?
                                   (VirtualFileSystemResource) new VirtualDirectory(resourceName, fsra) :
                                   new VirtualFile(resourceName, resourceAccessor));
         char driveLetter = _dokanExecutor.DriveLetter;
         return(Path.Combine(driveLetter + ":\\", rootDirectoryName + "\\" + resourceName));
     }
 }
 public void RemoveResource(string rootDirectoryName, IFileSystemResourceAccessor resourceAccessor)
 {
     lock (_syncObj)
     {
         if (_dokanExecutor == null)
         {
             return;
         }
         VirtualRootDirectory rootDirectory = _dokanExecutor.GetRootDirectory(rootDirectoryName);
         if (rootDirectory == null)
         {
             return;
         }
         string resourceName = resourceAccessor.ResourceName;
         VirtualFileSystemResource toRemove;
         if (!rootDirectory.ChildResources.TryGetValue(resourceName, out toRemove))
         {
             return;
         }
         rootDirectory.ChildResources.Remove(resourceName);
         toRemove.Dispose();
     }
 }