Ejemplo n.º 1
0
 public int FindFiles(String filename, ArrayList files, DokanFileInfo info)
 {
     string path = GetPath(filename);
     if (Directory.Exists(path))
     {
         DirectoryInfo d = new DirectoryInfo(path);
         FileSystemInfo[] entries = d.GetFileSystemInfos();
         foreach (FileSystemInfo f in entries)
         {
             FileInformation fi = new FileInformation();
             fi.Attributes = f.Attributes;
             fi.CreationTime = f.CreationTime;
             fi.LastAccessTime = f.LastAccessTime;
             fi.LastWriteTime = f.LastWriteTime;
             fi.Length = (f is DirectoryInfo) ? 0 : ((FileInfo)f).Length;
             fi.FileName = f.Name;
             files.Add(fi);
         }
         return 0;
     }
     else
     {
         return -1;
     }
 }
Ejemplo n.º 2
0
        public int GetFileInformation(string filename, Dokan.FileInformation fileinfo, DokanFileInfo info)
        {
            WriteTrace("getfileinformation", filename);

            FileReferences fileReference = files.Value.GetFolderReference(filename);

            string name = filename.Split(new [] { '\\' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault();

            if (fileReference != null && (fileReference.Name ?? string.Empty) != (name ?? string.Empty))
            {
                return(-DokanNet.ERROR_FILE_NOT_FOUND);
            }

            if (fileReference != null)
            {
                fileinfo.Attributes     = fileReference.IsFolder() ? FileAttributes.Directory : FileAttributes.Normal;
                fileinfo.LastAccessTime = fileReference.Date ?? DateTime.Now;
                fileinfo.LastWriteTime  = fileReference.Date ?? DateTime.Now;
                fileinfo.CreationTime   = fileReference.Date ?? DateTime.Now;
                fileinfo.FileName       = fileReference.Name;
                fileinfo.Length         = fileReference.Size;

                return(DokanNet.DOKAN_SUCCESS);
            }

            return(-DokanNet.ERROR_FILE_NOT_FOUND);
        }
Ejemplo n.º 3
0
 public static void CloneTo(this FileInformation that, ref FileInformation target)
 {
     target.Attributes = that.Attributes;
     target.FileName = that.FileName;
     target.Length = that.Length;
     target.LastAccessTime = that.LastAccessTime;
     target.LastWriteTime = that.LastWriteTime;
     target.CreationTime = that.CreationTime;
 }
Ejemplo n.º 4
0
 public static void UpdateFileInformation(this MongoGridFSFileInfo file, ref FileInformation dokanFileInformation)
 {
     dokanFileInformation.Length = file.Length;
     dokanFileInformation.CreationTime = file.UploadDate;
     dokanFileInformation.Attributes = FileAttributes.ReadOnly;
     dokanFileInformation.LastAccessTime = DateTime.Now;
     dokanFileInformation.LastWriteTime = DateTime.Now;
     dokanFileInformation.FileName = Path.GetFileName(file.Name);
 }
Ejemplo n.º 5
0
 int DokanOperations.GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
 {
     VFileInfo vinfo;
     int status = data.GetFileInformation (filename, out vinfo);
     fileinfo.Attributes = vinfo.Attributes;
     fileinfo.CreationTime = vinfo.CreationTime;
     fileinfo.LastAccessTime = vinfo.LastAccessTime;
     fileinfo.LastWriteTime = vinfo.LastWriteTime;
     fileinfo.Length = vinfo.Length;
     return status;
 }
 public int GetFileInformation(string filename, Dokan.FileInformation fileinfo, Dokan.DokanFileInfo info)
 {
     NotImplemented(filename, info.Context);
     try
     {
         var FileSystemEntry = FileSystem.GetFileInfo(filename);
         FillFileInformationFromFileSystemEntry(fileinfo, FileSystemEntry);
         return(0);
     }
     catch (Exception)
     {
         return(-1);
         //return 0;
     }
 }
Ejemplo n.º 7
0
        public int FindFiles(string filename, ArrayList files, DokanFileInfo info)
        {
            if (!mItems.ContainsKey(filename))
                return -1;

            var dir = mItems[filename] as Zpl.ZfsDirectory;
            if (dir == null)
                return -1;

            foreach (var item in dir.GetChildren().Where(FilterItem))
            {
                FileInformation finfo = new FileInformation();
                finfo.FileName = item.Name;
                SetAttributes(item, finfo);
                files.Add(finfo);
            }

            return 0;
        }
Ejemplo n.º 8
0
        //==========================================================================
        //	ファイル情報
        //==========================================================================
        private void CopyFileInfo(Dokan.FileInformation info, jsch::SftpATTRS r_attr)
        {
            info.Length         = r_attr.getSize();
            info.CreationTime   = Unix.UnixTime.UnixTimeToDateTime(r_attr.getMTime());
            info.LastAccessTime = Unix.UnixTime.UnixTimeToDateTime(r_attr.getATime());
            info.LastWriteTime  = Unix.UnixTime.UnixTimeToDateTime(r_attr.getMTime());

            // attributes
            info.Attributes =
                r_attr.isDir()?System.IO.FileAttributes.Directory:
                System.IO.FileAttributes.Normal;
            if (this.account.ReadOnly && !r_attr.isDir())
            {
                info.Attributes |= System.IO.FileAttributes.ReadOnly;
            }
            if (account.Offline)
            {
                info.Attributes |= System.IO.FileAttributes.Offline;
            }
            if (info.FileName.Length > 0 && info.FileName[0] == '.')
            {
                info.Attributes |= System.IO.FileAttributes.Hidden;
            }
        }
Ejemplo n.º 9
0
        public int FindFiles(
            String filename,
            ArrayList files,
            DokanFileInfo info)
        {
            Debug("FindFiles {0}", filename);

            try
            {
                string path = GetPath(filename);
                ArrayList entries = (ArrayList)GetChannel().ls(path);

                foreach (ChannelSftp.LsEntry entry in entries)
                {

                    FileInformation fi = new FileInformation();

                    fi.Attributes = entry.getAttrs().isDir() ?
                        FileAttributes.Directory :
                        FileAttributes.Normal;

                    if (DokanSSHFS.UseOffline)
                        fi.Attributes |= FileAttributes.Offline;

                    DateTime org = new DateTime(1970, 1, 1, 0, 0, 0, 0);

                    fi.CreationTime = org.AddSeconds(entry.getAttrs().getMTime());
                    fi.LastAccessTime = org.AddSeconds(entry.getAttrs().getATime());
                    fi.LastWriteTime = org.AddSeconds(entry.getAttrs().getMTime());
                    fi.Length = entry.getAttrs().getSize();
                    //fi.FileName = System.Text.Encoding.UTF8.GetString(entry.getFilename().getBytes());
                    fi.FileName = entry.getFilename();

                    if (fi.FileName.StartsWith("."))
                    {
                        fi.Attributes |= FileAttributes.Hidden;
                    }
                    files.Add(fi);
                }
                return 0;

            }
            catch (SftpException)
            {
                return -1;
            }
            catch (Exception e)
            {
                connectionError_ = true;
                Debug(e.ToString());
                Reconnect();
                return -1;
            }
        }
Ejemplo n.º 10
0
        public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
        {
            RaiseMethodCall("GetFileInformation " + filename);

            if (cachedDirectoryFileInformation.ContainsKey(filename))
            {
                var cachedFileInfo = cachedDirectoryFileInformation[filename];

                fileinfo.FileName = cachedFileInfo.FileName;
                fileinfo.CreationTime = cachedFileInfo.CreationTime;
                fileinfo.LastAccessTime = cachedFileInfo.LastAccessTime;
                fileinfo.LastWriteTime = cachedFileInfo.LastWriteTime;
                fileinfo.Length = cachedFileInfo.Length;
                fileinfo.Attributes = cachedFileInfo.Attributes;

                return 0;
            }
            else
            {
                RaiseDebug("GetFileInformation not cached: " + filename);
                return -DokanNet.ERROR_FILE_NOT_FOUND;
            }
        }
Ejemplo n.º 11
0
        public int FindFiles(String filename, ArrayList files, DokanFileInfo info)
        {
            string path = GetPath(filename);
            if (Directory.Exists(path))
            {
                DirectoryInfo d = new DirectoryInfo(path);
                FileSystemInfo[] entries = d.GetFileSystemInfos();
                foreach (FileSystemInfo f in entries)
                {
                    if (f.Name == settingsFile)
                    {
                        continue;
                    }
                    FileInformation fi = new FileInformation();
                    fi.Attributes = f.Attributes;
                    fi.CreationTime = f.CreationTime;
                    fi.LastAccessTime = f.LastAccessTime;
                    fi.LastWriteTime = f.LastWriteTime;
                    fi.Length = (f is DirectoryInfo) ? 0 : ((FileInfo)f).Length;
                    fi.FileName = f.Name;
                    files.Add(fi);
                }
                return DokanNet.DOKAN_SUCCESS;
            }

            return DokanNet.DOKAN_ERROR;
        }
Ejemplo n.º 12
0
        public int FindFiles(string filename, System.Collections.ArrayList files, DokanFileInfo info)
        {
            try
            {
             //   logger.addLog("FindFiles '" + filename + "'");

                if (mergedDirs.ContainsDirectory(filename))
                {
                    List<FileSystemInfo> entries = mergedDirs.getFileSystemInfos(filename);
                    foreach (FileSystemInfo f in entries)
                    {
                        FileInformation fi = new FileInformation();
                        fi.Attributes = f.Attributes;
                        fi.CreationTime = f.CreationTime;
                        fi.LastAccessTime = f.LastAccessTime;
                        fi.LastWriteTime = f.LastWriteTime;
                        fi.Length = (f is DirectoryInfo) ? 0 : ((FileInfo)f).Length;
                        fi.FileName = f.Name;

                        //fi.Attributes.HasFlag(FileAttributes.ReadOnly);
                        files.Add(fi);
                    }
                    return 0;
                }
                else
                {
                    return -1;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Caught an exception: " + e + ": " + e.Message);
                return -1;
            }
        }
Ejemplo n.º 13
0
 // GetFileInformation returns information about a container at the top level, blob prefixes at lower levels,
 // and empty directories (tracked in memory). File times are all specified as `DateTime.UtcNow`.
 public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
 {
     var split = filename.Split(new[] { Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries);
     if (split.Length == 0)
     {
         fileinfo.Attributes = FileAttributes.Directory;
         fileinfo.CreationTime = DateTime.UtcNow;
         fileinfo.LastAccessTime = DateTime.UtcNow;
         fileinfo.LastWriteTime = DateTime.UtcNow;
         return 0;
     }
     if (split.Length == 1)
     {
         var container = blobs.ListContainers(split[0]).FirstOrDefault();
         if (container != null && container.Name == split[0])
         {
             fileinfo.Attributes = FileAttributes.Directory;
             fileinfo.CreationTime = DateTime.UtcNow;
             fileinfo.LastAccessTime = DateTime.UtcNow;
             fileinfo.LastWriteTime = DateTime.UtcNow;
             return 0;
         }
         else
         {
             return -1;
         }
     }
     var blob = blobs.GetBlobReference(filename.Trim('\\'));
     try
     {
         blob.FetchAttributes();
         fileinfo.CreationTime = blob.Properties.LastModifiedUtc;
         fileinfo.LastWriteTime = blob.Properties.LastModifiedUtc;
         fileinfo.LastAccessTime = DateTime.UtcNow;
         fileinfo.Length = blob.Properties.Length;
         return 0;
     }
     catch
     {
         if (emptyDirectories.Contains(filename) || blobs.ListBlobsWithPrefix(filename.Trim('\\').Replace('\\', '/')).Any())
         {
             fileinfo.Attributes = FileAttributes.Directory;
             fileinfo.CreationTime = DateTime.UtcNow;
             fileinfo.LastAccessTime = DateTime.UtcNow;
             fileinfo.LastWriteTime = DateTime.UtcNow;
             return 0;
         }
         else
         {
             return -DokanNet.ERROR_FILE_NOT_FOUND;
         }
     }
 }
Ejemplo n.º 14
0
        public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
        {
            CacheEntry entry = cache_.Lookup(filename);

            int ret = 0;

            if (entry.GetFileInfoRet == int.MaxValue)
            {
                ret = ope_.GetFileInformation(filename, fileinfo, info);
                entry.GetFileInfoRet = ret;
                entry.GetFileInfoValue = fileinfo;
            }
            else
            {
                FileInformation finfo = entry.GetFileInfoValue;

                fileinfo.Attributes = finfo.Attributes;
                fileinfo.CreationTime = finfo.CreationTime;
                fileinfo.FileName = finfo.FileName;
                fileinfo.LastAccessTime = finfo.LastAccessTime;
                fileinfo.LastWriteTime = finfo.LastWriteTime;
                fileinfo.Length = finfo.Length;

                ret = entry.GetFileInfoRet;
            }

            return ret;
        }
Ejemplo n.º 15
0
 public int FindFiles(
     string filename,
     System.Collections.ArrayList files,
     DokanFileInfo info)
 {
     if (filename == "\\")
     {
         foreach (string name in TopDirectory.Keys)
         {
             FileInformation finfo = new FileInformation();
             finfo.FileName = name;
             finfo.Attributes = System.IO.FileAttributes.Directory;
             finfo.LastAccessTime = DateTime.Now;
             finfo.LastWriteTime = DateTime.Now;
             finfo.CreationTime = DateTime.Now;
             files.Add(finfo);
         }
         return 0;
     }
     else
     {
         RegistryKey key = GetRegistoryEntry(filename);
         if (key == null)
             return -1;
         foreach (string name in key.GetSubKeyNames())
         {
             FileInformation finfo = new FileInformation();
             finfo.FileName = name;
             finfo.Attributes = System.IO.FileAttributes.Directory;
             finfo.LastAccessTime = DateTime.Now;
             finfo.LastWriteTime = DateTime.Now;
             finfo.CreationTime = DateTime.Now;
             files.Add(finfo);
         }
         foreach (string name in key.GetValueNames())
         {
             FileInformation finfo = new FileInformation();
             finfo.FileName = name;
             finfo.Attributes = System.IO.FileAttributes.Normal;
             finfo.LastAccessTime = DateTime.Now;
             finfo.LastWriteTime = DateTime.Now;
             finfo.CreationTime = DateTime.Now;
             files.Add(finfo);
         }
         return 0;
     }
 }
Ejemplo n.º 16
0
        public int GetFileInformation(
            String filename,
            FileInformation fileinfo,
            DokanFileInfo info)
        {
            try
            {
                string path = GetPath(filename);
                SftpATTRS attr = GetChannel().stat(path);

                fileinfo.Attributes = attr.isDir() ?
                    FileAttributes.Directory :
                    FileAttributes.Normal;

                if (DokanSSHFS.UseOffline)
                    fileinfo.Attributes |= FileAttributes.Offline;

                DateTime org = new DateTime(1970, 1, 1, 0, 0, 0, 0);

                fileinfo.CreationTime = org.AddSeconds(attr.getMTime());
                fileinfo.LastAccessTime = org.AddSeconds(attr.getATime());
                fileinfo.LastWriteTime = org.AddSeconds(attr.getMTime());
                fileinfo.Length = attr.getSize();

                return 0;
            }
            catch (SftpException)
            {
                return -1;
            }
            catch (Exception e)
            {
                connectionError_ = true;
                Debug(e.ToString());
                Reconnect();
                return -1;
            }
        }
Ejemplo n.º 17
0
        // find apis
        public int FindFiles(string filename, System.Collections.ArrayList files, DokanFileInfo info)
        {
            FlacFsObjectInfo[] entries = flacFs_.ListDirectoryContents(filename);
            if (entries == null)
            {
                return -1;
            }

            foreach(FlacFsObjectInfo fsoi in entries)
            {
                FileInformation fi = new FileInformation();
                TranslateFileSystemInfo(fsoi, fi);
                files.Add(fi);
            }
            return 0;
        }
Ejemplo n.º 18
0
 private static void TranslateFileSystemInfo(FlacFsObjectInfo fsoi, FileInformation fi)
 {
     fi.Attributes = fsoi.Attributes;
     fi.CreationTime = fsoi.CreationTime;
     fi.LastAccessTime = fsoi.LastAccessTime;
     fi.LastWriteTime = fsoi.LastWriteTime;
     fi.Length = fsoi.Length;
     fi.FileName = fsoi.Name;
 }
Ejemplo n.º 19
0
 public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
 {
     FlacFsObjectInfo fsoi = flacFs_.GetFsObjectInfo(filename);
     if (fsoi == null)
     {
         return -1;
     }
     else
     {
         TranslateFileSystemInfo(fsoi, fileinfo);
         return 0;
     }
 }
Ejemplo n.º 20
0
 public int GetFileInformation(String filename, FileInformation fileinfo, DokanFileInfo info)
 {
     Debug.WriteLine("FileInf {0} {1}", filename, info.Context);
     try
     {
         Metadata data = info.Context as Metadata;
         fileinfo.Attributes = data.is_dir ? FileAttributes.Directory : FileAttributes.Normal;
         if (data.modified != "")
         {
             fileinfo.LastWriteTime = DateTime.Parse(data.modified);
         }
         else
         {
             fileinfo.LastWriteTime = DateTime.Today;
         }
         fileinfo.CreationTime = fileinfo.LastWriteTime;
         fileinfo.LastAccessTime = fileinfo.LastWriteTime;
         fileinfo.Length = (long)data.bytes;
         return 0;
     }
     catch (NotFoundException)
     {
         return -DokanNet.ERROR_PATH_NOT_FOUND;
     }
 }
Ejemplo n.º 21
0
        public int GetFileInformation(
            string filename,
            FileInformation fileinfo,
            DokanFileInfo info)
        {
            if (filename == "\\")
            {
                fileinfo.Attributes = System.IO.FileAttributes.Directory;
                fileinfo.LastAccessTime = DateTime.Now;
                fileinfo.LastWriteTime = DateTime.Now;
                fileinfo.CreationTime = DateTime.Now;

                return 0;
            }

            RegistryKey key = GetRegistoryEntry(filename);
            if (key == null)
                return -1;

            fileinfo.Attributes = System.IO.FileAttributes.Directory;
            fileinfo.LastAccessTime = DateTime.Now;
            fileinfo.LastWriteTime = DateTime.Now;
            fileinfo.CreationTime = DateTime.Now;

            return 0;
        }
Ejemplo n.º 22
0
        public int FindFiles(string filename, System.Collections.ArrayList files, DokanFileInfo info)
        {
            string webFilename = Normalize(filename);

            if (!memfs.Exists(webFilename))
            {
                //Need to improve this, if it wasn't found check in the internet
                try
                {
                    FillList(webFilename);
                    if (!memfs.Exists(webFilename))
                    {
                        return -DokanNet.ERROR_PATH_NOT_FOUND;
                    }
                }
                catch
                {
                    return -DokanNet.ERROR_PATH_NOT_FOUND;
                }
                return -DokanNet.ERROR_PATH_NOT_FOUND;
            }

            MemFile parent = memfs.Lookup(webFilename);

            if (!parent.Listed)
            {
                FillList(webFilename);
            }

            if (parent.LastAccessed.AddMilliseconds(CacheMillis) < DateTime.Now)
            {
                FillList(webFilename);
            }

            ICollection<MemFile> memFiles = memfs.List(webFilename);

            foreach(MemFile mf in memFiles) {
                FileInformation fi = new FileInformation();

                fi.FileName = mf.Name;
                fi.Length = mf.Length;
                fi.CreationTime = mf.DateCreated;
                fi.LastAccessTime = mf.LastAccessed;
                fi.LastWriteTime = mf.LastUpdated;

                if (mf.Type == WebdavClient.DAVType.File)
                {
                    fi.Attributes = FileAttributes.Normal;
                }
                else
                {
                    fi.Attributes = FileAttributes.Directory;
                }

                files.Add(fi);
            }

            return 0;
        }
Ejemplo n.º 23
0
        private bool mergeDirectoryListing(string path, ArrayList fileArrList)
        {
            bool found = false;
            KeyedCollectionImpl<string, FileInformation> directoryItems = new KeyedCollectionImpl<string, FileInformation>(delegate(FileInformation itemInfo)
            {
                return itemInfo.FileName;
            });

            Trace.TraceInformation(String.Format("Creating merged directory listing for " + path));
            foreach (Member m in this.members)
            {
                if(m.GetFileSystemObjectKind(path) != FileSystemObjectKind.Directory)
                {
                    continue;
                }
                string realPath = m.GetRootedPath(path);
                found = true;
                foreach (FileSystemInfo fsInfo in new DirectoryInfo(realPath).GetFileSystemInfos())
                {
                    FileInformation fi = new FileInformation();
                    fi.Attributes = fsInfo.Attributes;
                    fi.CreationTime = fsInfo.CreationTime;
                    fi.FileName = fsInfo.Name;
                    fi.LastAccessTime = fsInfo.LastAccessTime;
                    fi.LastWriteTime = fsInfo.LastWriteTime;
                    if (fsInfo is FileInfo)
                    {
                        fi.Length = (fsInfo as FileInfo).Length;
                    }
                    else
                    {
                        fi.Length = 0;
                    }
                    if (!directoryItems.Contains(fi.FileName))
                    {
                        directoryItems.Add(fi);
                        Trace.TraceInformation(String.Format("Found object {0}, size {1} bytes", fi.FileName, fi.Length));
                    }
                }
            }
            foreach (FileInformation fi in directoryItems)
            {
                fileArrList.Add(fi);
            }
            return found;
        }
Ejemplo n.º 24
0
        public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
        {
            string webFilename = Normalize(filename);

            if(!memfs.Exists(webFilename))
            {
                return -DokanNet.ERROR_PATH_NOT_FOUND;
            }

            MemFile mf = memfs.Lookup(webFilename);

            fileinfo.Length = mf.Length;
            fileinfo.CreationTime = mf.DateCreated;
            fileinfo.LastAccessTime = mf.LastAccessed;
            fileinfo.LastWriteTime = mf.LastUpdated;

            if (mf.Type == WebdavClient.DAVType.File)
            {
                fileinfo.Attributes = FileAttributes.Normal;
            }
            else
            {
                fileinfo.Attributes = FileAttributes.Directory;
            }

            return 0;
        }
Ejemplo n.º 25
0
 public void RemoveGetFileInfoCache()
 {
     GetFileInfoRet = int.MaxValue;
     GetFileInfoValue = null;
 }
Ejemplo n.º 26
0
 public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
 {
     Trace.WriteLine(string.Format("GetFileInformation {0}", filename));
     if (filename == @"\")
     {
         fileinfo.Attributes = FileAttributes.Directory;
         fileinfo.LastAccessTime = DateTime.Now;
         fileinfo.LastWriteTime = DateTime.Now;
         fileinfo.CreationTime = DateTime.Now;
         return 0;
     }
     var fileRef = Extensions.GetFileReference(root, filename.ToFileString());
     if (fileRef.Exists())
     {
         fileinfo.Length = fileRef.Properties.Length;
         fileinfo.LastAccessTime = fileRef.Properties.LastModified.Value.LocalDateTime;
         fileinfo.LastWriteTime = fileRef.Properties.LastModified.Value.LocalDateTime;
         fileinfo.CreationTime = fileRef.Properties.LastModified.Value.LocalDateTime;
         fileinfo.Attributes = FileAttributes.Normal;
         fileinfo.FileName = fileRef.Name;
         return 0;
     }
     else
     {
         var dirRef = Extensions.GetDirectoryReference(root, filename.ToFileString());
         if (dirRef.Exists())
         {
             fileinfo.Attributes = FileAttributes.Directory;
             fileinfo.LastAccessTime = DateTime.Now;
             fileinfo.LastWriteTime = DateTime.Now;
             fileinfo.CreationTime = DateTime.Now;
             fileinfo.FileName = filename;
             return 0;
         }
     }
     return -DokanNet.ERROR_FILE_NOT_FOUND;
 }
Ejemplo n.º 27
0
 // OpenDirectory succeeds as long as the specified path is an empty directory (tracked in memory)
 // or a blob prefix containing blobs (discovered via GetFileInformation returning a success code with a directory).
 public int OpenDirectory(string filename, DokanFileInfo info)
 {
     if (emptyDirectories.Contains(filename)) return 0;
     var fileinfo = new FileInformation();
     var status = GetFileInformation(filename, fileinfo, info);
     if ((status == 0) && (fileinfo.Attributes == FileAttributes.Directory)) return 0;
     return -DokanNet.ERROR_FILE_NOT_FOUND;
 }
Ejemplo n.º 28
0
 public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 29
0
        public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
        {
            Console.WriteLine("Get File Info");
            try
            {
             //   logger.addLog("GetFileInformation '" + filename + "'");
                string path = mergedDirs.getRealPath(filename);
                if (File.Exists(path))
                {
                    FileInfo f = new FileInfo(path);

                    fileinfo.Attributes = f.Attributes;
                    fileinfo.CreationTime = f.CreationTime;
                    fileinfo.LastAccessTime = f.LastAccessTime;
                    fileinfo.LastWriteTime = f.LastWriteTime;
                    fileinfo.Length = f.Length;
                    return 0;
                }
                else if (Directory.Exists(path))
                {
                    DirectoryInfo f = new DirectoryInfo(path);

                    fileinfo.Attributes = f.Attributes;
                    fileinfo.CreationTime = f.CreationTime;
                    fileinfo.LastAccessTime = f.LastAccessTime;
                    fileinfo.LastWriteTime = f.LastWriteTime;
                    fileinfo.Length = 0;// f.Length;
                    return 0;
                }
                else
                {
                    return -1;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Caught an exception: " + e + ": " + e.Message);
                return -1;
            }
        }
Ejemplo n.º 30
0
 public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
 {
     Trace.TraceInformation("GetFileInformation: {0}", filename);
     filename = GetPath(filename);
     var file = _gridFs.FindOne(filename);
     if(file != null)
     {
         file.UpdateFileInformation(ref fileinfo);
         return 0;
     }
     var probablyDir = _gridFs.FindFileOrDir(filename);
     if (probablyDir != null)
     {
         probablyDir.CloneTo(ref fileinfo);
         return 0;
     }
     return -1;
 }
Ejemplo n.º 31
0
        public int GetFileInformation(String filename, FileInformation fileinfo, DokanFileInfo info)
        {
            string path = GetPath(filename);
            if (File.Exists(path))
            {
                FileInfo f = new FileInfo(path);

                fileinfo.Attributes = f.Attributes;
                fileinfo.CreationTime = f.CreationTime;
                fileinfo.LastAccessTime = f.LastAccessTime;
                fileinfo.LastWriteTime = f.LastWriteTime;
                fileinfo.Length = f.Length;
                return DokanNet.DOKAN_SUCCESS;
            }
            else if (Directory.Exists(path))
            {
                DirectoryInfo f = new DirectoryInfo(path);

                fileinfo.Attributes = f.Attributes;
                fileinfo.CreationTime = f.CreationTime;
                fileinfo.LastAccessTime = f.LastAccessTime;
                fileinfo.LastWriteTime = f.LastWriteTime;
                fileinfo.Length = 0;// f.Length;
                return DokanNet.DOKAN_SUCCESS;
            }

            return DokanNet.DOKAN_ERROR;
        }
Ejemplo n.º 32
0
 public void RemoveGetFileInfoCache()
 {
     GetFileInfoRet   = int.MaxValue;
     GetFileInfoValue = null;
 }
Ejemplo n.º 33
0
        public int GetFileInformationProxy(
            IntPtr rawFileName,
            ref BY_HANDLE_FILE_INFORMATION rawHandleFileInformation,
            ref DOKAN_FILE_INFO rawFileInfo)
        {
          
            try
            {
                string file = GetFileName(rawFileName);

                FileInformation fi = new FileInformation();

                int ret = operations_.GetFileInformation(file, ref fi, GetFileInfo(ref rawFileInfo));

                if (ret == 0)
                {
                    rawHandleFileInformation.dwFileAttributes = (uint)fi.Attributes;

                    rawHandleFileInformation.ftCreationTime.dwHighDateTime =
                        (int)(fi.CreationTime.ToFileTime() >> 32);
                    rawHandleFileInformation.ftCreationTime.dwLowDateTime =
                        (int)(fi.CreationTime.ToFileTime() & 0xffffffff);

                    rawHandleFileInformation.ftLastAccessTime.dwHighDateTime =
                        (int)(fi.LastAccessTime.ToFileTime() >> 32);
                    rawHandleFileInformation.ftLastAccessTime.dwLowDateTime =
                        (int)(fi.LastAccessTime.ToFileTime() & 0xffffffff);

                    rawHandleFileInformation.ftLastWriteTime.dwHighDateTime =
                        (int)(fi.LastWriteTime.ToFileTime() >> 32);
                    rawHandleFileInformation.ftLastWriteTime.dwLowDateTime =
                        (int)(fi.LastWriteTime.ToFileTime() & 0xffffffff);

                    rawHandleFileInformation.nFileSizeLow =
                        (uint)(fi.Length & 0xffffffff);
                    rawHandleFileInformation.nFileSizeHigh =
                        (uint)(fi.Length >> 32);
                }

                return ret;

            }
            catch (Exception e)
            {
                Console.Error.WriteLine(e.ToString());
                return -1;
            }

        }
Ejemplo n.º 34
0
 public static FileInformation GetFileInformation(this MongoGridFSFileInfo that)
 {
     var finfo = new FileInformation();
     that.UpdateFileInformation(ref finfo);
     return finfo;
 }