public NtStatus GetFileInformation(Path path, out FileInformation fileInfo, IDokanFileInfo info) { fileInfo = default; return(path switch { // Dirs RootPath p => GetFileInformation(p, out fileInfo), DatabasePath p => GetFileInformation(p, out fileInfo), CollectionPath p => GetFileInformation(p, out fileInfo), DataDirectoryPath p => GetFileInformation(p, out fileInfo), QueryDirectoryPath p => GetFileInformation(p, out fileInfo), QueryEmptyDirectoryPath p => GetFileInformation(p, out fileInfo), // Files StatsPath p => GetFileInformation(p, out fileInfo), IndexesPath p => GetFileInformation(p, out fileInfo), CurrentOpPath p => GetFileInformation(p, out fileInfo), ServerStatusPath p => GetFileInformation(p, out fileInfo), BuildInfoPath p => GetFileInformation(p, out fileInfo), HostInfoPath p => GetFileInformation(p, out fileInfo), ListCommandsPath p => GetFileInformation(p, out fileInfo), DataDocumentPath p => GetFileInformation(p, out fileInfo), QueryDocumentPath p => GetFileInformation(p, out fileInfo), QueryAllDocumentsPath p => GetFileInformation(p, out fileInfo), var p => LogFailure(p) });
protected NtStatus LogFailure(Path path, [CallerMemberName] string?callerName = null) { if (_logger.IsEnabled(LogEventLevel.Information)) { _logger.Debug("Handler for combination ({MethodName}, {PathType}) is not implemented.", callerName, path.GetType()); } return(NtStatus.NotImplemented); }
public NtStatus FindFilesWithPattern(Path path, string?searchPattern, out IList <FileInformation> files, IDokanFileInfo info) { files = Array.Empty <FileInformation>(); return(path switch { RootPath p => FindFilesWithPattern(p, searchPattern, out files), DatabasePath p => FindFilesWithPattern(p, searchPattern, out files), CollectionPath p => FindFilesWithPattern(p, searchPattern, out files), DataDirectoryPath p => FindFilesWithPattern(p, searchPattern, out files), QueryDirectoryPath p => FindFilesWithPattern(p, searchPattern, out files), QueryEmptyDirectoryPath p => FindFilesWithPattern(p, searchPattern, out files), var p => LogFailure(path) });