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)); } }
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); }
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); }