Esempio n. 1
0
        private static Int32 GetDirInfoByName(
            IntPtr FileSystemPtr,
            ref FullContext FullContext,
            String FileName,
            out DirInfo DirInfo)
        {
            FileSystemBase FileSystem = (FileSystemBase)Api.GetUserContext(FileSystemPtr);

            try
            {
                Object FileNode, FileDesc;
                String NormalizedName;
                Api.GetFullContext(ref FullContext, out FileNode, out FileDesc);
                DirInfo = default(DirInfo);
                Int32 Result = FileSystem.GetDirInfoByName(
                    FileNode,
                    FileDesc,
                    FileName,
                    out NormalizedName,
                    out DirInfo.FileInfo);
                DirInfo.SetFileNameBuf(NormalizedName);
                return(Result);
            }
            catch (Exception ex)
            {
                DirInfo = default(DirInfo);
                return(ExceptionHandler(FileSystem, ex));
            }
        }
Esempio n. 2
0
        public Int32 SeekableReadDirectory(
            Object FileNode,
            Object FileDesc,
            String Pattern,
            String Marker,
            IntPtr Buffer,
            UInt32 Length,
            out UInt32 BytesTransferred)
        {
            Object  Context = null;
            String  FileName;
            DirInfo DirInfo = default(DirInfo);

            BytesTransferred = default(UInt32);
            while (ReadDirectoryEntry(FileNode, FileDesc, Pattern, Marker,
                                      ref Context, out FileName, out DirInfo.FileInfo))
            {
                DirInfo.SetFileNameBuf(FileName);
                if (!Api.FspFileSystemAddDirInfo(ref DirInfo, Buffer, Length,
                                                 out BytesTransferred))
                {
                    return(STATUS_SUCCESS);
                }
            }
            Api.FspFileSystemEndDirInfo(Buffer, Length, out BytesTransferred);
            return(STATUS_SUCCESS);
        }
Esempio n. 3
0
        public Int32 BufferedReadDirectory(
            DirectoryBuffer DirectoryBuffer,
            Object FileNode,
            Object FileDesc,
            String Pattern,
            String Marker,
            IntPtr Buffer,
            UInt32 Length,
            out UInt32 BytesTransferred)
        {
            Object  Context = null;
            String  FileName;
            DirInfo DirInfo         = default(DirInfo);
            Int32   DirBufferResult = STATUS_SUCCESS;

            BytesTransferred = default(UInt32);
            if (Api.FspFileSystemAcquireDirectoryBuffer(ref DirectoryBuffer.DirBuffer, null == Marker,
                                                        out DirBufferResult))
            {
                try
                {
                    while (ReadDirectoryEntry(FileNode, FileDesc, Pattern, Marker,
                                              ref Context, out FileName, out DirInfo.FileInfo))
                    {
                        DirInfo.SetFileNameBuf(FileName);
                        if (!Api.FspFileSystemFillDirectoryBuffer(
                                ref DirectoryBuffer.DirBuffer, ref DirInfo, out DirBufferResult))
                        {
                            break;
                        }
                    }
                }
                finally
                {
                    Api.FspFileSystemReleaseDirectoryBuffer(ref DirectoryBuffer.DirBuffer);
                }
            }
            if (0 > DirBufferResult)
            {
                BytesTransferred = default(UInt32);
                return(DirBufferResult);
            }
            Api.FspFileSystemReadDirectoryBuffer(ref DirectoryBuffer.DirBuffer,
                                                 Marker, Buffer, Length, out BytesTransferred);
            return(STATUS_SUCCESS);
        }