Exemple #1
0
        int DokanOperations.ReadFile(string filename, byte[] buffer, ref uint readBytes, long offset, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.ReadFile(filename, buffer, ref readBytes, offset, info));
            }

            readBytes = 0;
            FsFile file = GetFile(filename);

            if (file == null)
            {
                return(-WinErrorCode.ERROR_FILE_NOT_FOUND);
            }

            int r = file.Read((int)offset, buffer, 0, buffer.Length);

            if (r <= 0)
            {
                return(-1);
            }
            readBytes = (uint)r;
            return(0);
        }
Exemple #2
0
        int DokanOperations.WriteFile(string filename, byte[] buffer, ref uint writtenBytes, long offset, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.WriteFile(filename, buffer, ref writtenBytes, offset, info));
            }

            return(-WinErrorCode.ERROR_PATH_NOT_FOUND);
        }
Exemple #3
0
        int DokanOperations.UnlockFile(string filename, long offset, long length, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.UnlockFile(filename, offset, length, info));
            }

            return(0);
        }
Exemple #4
0
        int DokanOperations.SetFileTime(string filename, System.DateTime ctime, System.DateTime atime, System.DateTime mtime, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.SetFileTime(filename, ctime, atime, mtime, info));
            }

            return(-WinErrorCode.ERROR_FILE_NOT_FOUND);
        }
Exemple #5
0
        int DokanOperations.SetFileAttributes(string filename, System.IO.FileAttributes attr, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.SetFileAttributes(filename, attr, info));
            }

            return(-WinErrorCode.ERROR_FILE_NOT_FOUND);
        }
Exemple #6
0
        int DokanOperations.SetEndOfFile(string filename, long length, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.SetEndOfFile(filename, length, info));
            }

            return(-WinErrorCode.ERROR_FILE_NOT_FOUND);
        }
Exemple #7
0
        int DokanOperations.FlushFileBuffers(string filename, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.FlushFileBuffers(filename, info));
            }

            return(0);
        }
Exemple #8
0
        int DokanOperations.DeleteDirectory(string filename, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.DeleteDirectory(filename, info));
            }

            return(-WinErrorCode.ERROR_FILE_NOT_FOUND);
        }
Exemple #9
0
        int DokanOperations.CreateFile(string filename, System.IO.FileAccess access, System.IO.FileShare share, System.IO.FileMode mode, System.IO.FileOptions options, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.CreateFile(filename, access, share, mode, options, info));
            }

            return(0);
        }
Exemple #10
0
        int DokanOperations.CloseFile(string filename, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.CloseFile(filename, info));
            }

            return(0);
        }
Exemple #11
0
        int DokanOperations.FindFiles(string filename, System.Collections.ArrayList files, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.FindFiles(filename, files, info));
            }
            FsDirectory dir = GetDirectory(filename);

            if (dir == null)
            {
                return(-1);
            }

            // FindFiles
            foreach (Gen::KeyValuePair <string, FsNode> node in dir.files)
            {
                files.Add(node.Value.info);
            }
            return(0);
        }
Exemple #12
0
        int DokanOperations.MoveFile(string filename, string newname, bool replace, DokanFileInfo info)
        {
            FsMountPoint mnt1 = CheckMountPoint(ref filename);
            FsMountPoint mnt2 = CheckMountPoint(ref newname);

            if (mnt1 == null)
            {
                return(-WinErrorCode.ERROR_FILE_NOT_FOUND);
            }
            if (mnt2 == null)
            {
                return(-WinErrorCode.ERROR_PATH_NOT_FOUND);
            }

            if (mnt1 == mnt2)
            {
                return(mnt1.FsOperation.MoveFile(filename, newname, replace, info));
            }
            else
            {
                return(-WinErrorCode.ERROR_NOT_SAME_DEVICE);
            }
        }
Exemple #13
0
        int DokanOperations.GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
        {
            FsMountPoint mnt = CheckMountPoint(ref filename);

            if (mnt != null)
            {
                return(mnt.FsOperation.GetFileInformation(filename, fileinfo, info));
            }

            FsFile file = GetFile(filename);

            if (file == null)
            {
                return(-1);
            }
            fileinfo.FileName       = file.info.FileName;
            fileinfo.Length         = file.info.Length;
            fileinfo.Attributes     = file.info.Attributes;
            fileinfo.CreationTime   = file.info.CreationTime;
            fileinfo.LastAccessTime = file.info.LastAccessTime;
            fileinfo.LastWriteTime  = file.info.LastWriteTime;
            return(0);
        }