Открыть главное меню

DL FsSSearch

Версия от 04:48, 8 апреля 2019; Synergy (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

UINT16 DL_FsSSearch(FS_SEARCH_PARAMS_T params, WCHAR *search_string, FS_SEARCH_HANDLE_T *handle, UINT16 *res_count, DL_FS_OWNER_T owner_id);

Описание

Функция DL для синхронного поиска файлов

Параметры

  1. FS_SEARCH_PARAMS_T params
    Параметры для поиска
  2. WCHAR *search_string
    Строка для поиска
  3. FS_SEARCH_HANDLE_T *handle
    Указатель на переменную, в которую возвращается идентификатор поиска
  4. UINT16 *res_count
    Указатель на переменную, куда сохранится количество результатов поиска
  5. DL_FS_OWNER_T owner_id
    Идентификатор владельца файла, обычно 0

FS_SEARCH_PARAMS_T

typedef struct
{
#if defined(FTR_L7E) || defined(FTR_L9)	UINT32	flags;
#else	UINT8	flags;
#endif	UINT16	attrib; // В результат попадают те файлы, у которых (аттрибуты & mask == attrib)	UINT16	mask;
} FS_SEARCH_PARAMS_T;

Значения флагов

Для формирования поля flags структуры FS_SEARCH_PARAMS_T, можно комбинировать следующие флаги с помощью операции "логическое или", например

FS_SEARCH_PATH_START | FS_SEARCH_RECURSIVE
FS_SEARCH_EXCLUDE?
FS_SEARCH_COMBINED?
FS_SEARCH_SORT_CHRONOLOGICALCортировка по времени (создания/редактирования?)
FS_SEARCH_DIR_LISTING, FS_SEARCH_FOLDERSВозможно выдаст список папок
FS_SEARCH_PATH_START, FS_SEARCH_START_PATHИмена файлов в результате будут содержать полный путь
FS_SEARCH_SORT_ALPHANUMERIC, FS_SEARCH_SORT_BY_NAMEСортировка по алфавиту
FS_SEARCH_OWNER_MATCHПроверять владельца
FS_SEARCH_RECURSIVEРекурсивный поиск (будет искать в подпапках)
FS_SEARCH_RECURSIVE_AND_SORT_BY_NAMEFS_SEARCH_PATH_START, FS_SEARCH_SORT_ALPHANUMERIC и FS_SEARCH_RECURSIVE вместе
FS_SEARCH_RECURSIVE_AND_SORT_BY_TIMEFS_SEARCH_PATH_START, FS_SEARCH_SORT_CHRONOLOGICAL и FS_SEARCH_RECURSIVE вместе


Значения атрибутов

Для формирования поля attrib структуры FS_SEARCH_PARAMS_T, можно комбинировать следующие флаги с помощью операции "логическое или":

FS_ATTR_DEFAULTПо умолчанию
FS_ATTR_READONLYФайл с аттрибутом только чтение
FS_ATTR_HIDDENФайл с аттрибутом скрытый
FS_ATTR_SYSTEMФайл с аттрибутом системный
FS_ATTR_VOLUMEАттрибут диска
FS_ATTR_DIRECTORYАттрибут папки
FS_ATTR_ARCHIVEФайл с аттрибутом архивный



Строка для поиска

Для формирования поисковой строки, сначала пишем папку(ки), где будем искать:

L"file://b/mobile/audio/"

В поисковой строке также присутствуют спецсимволы-разделители. Вставляются их значения прямо в текст строки с помощью символа "\". Например, если мы хотим добавить в строку поиска паттерну для поиска, то мы добавляем разделитель FS_MATCH_SEPARATOR (0xFFFE), и сразу после него пишем паттерны (*.mp3 для музыки):

L"file://b/mobile/audio/\0xFFFE*.mp3"
НазваниеЗначениеОписание
FS_MATCH_SEPARATOR0xFFFEРазделитель между паттернами для поиска
FS_MATCH_PATH_SEPARATOR0xFFFDРазделитель между путями для поиска
FS_MATCH_PATH_NONREC_SEPARATOR0xFFFC?
FS_MATCH_PATH_EXCLUDE_SEPARATOR0xFFFBРазделитель между путями, которые нужно исключить из поиска
FS_MATCH_PATH_NONREC_EXCLUDE_SEPARATOR0xFFFA?

Пример

// Ищем все mp3 файлы на флешке в папке аудио
DL_FsSSearch(search, L"file://b/mobile/audio/\0xFFFE*.mp3", &handle, &count, DL_FS_OWNER_RESERVED);