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 для синхронного поиска файлов
Параметры
- FS_SEARCH_PARAMS_T params
- WCHAR *search_string
- FS_SEARCH_HANDLE_T *handle
- Указатель на переменную, в которую возвращается идентификатор поиска
- UINT16 *res_count
- Указатель на переменную, куда сохранится количество результатов поиска
- 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_CHRONOLOGICAL | Cортировка по времени (создания/редактирования?) |
| 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_NAME | FS_SEARCH_PATH_START, FS_SEARCH_SORT_ALPHANUMERIC и FS_SEARCH_RECURSIVE вместе |
| FS_SEARCH_RECURSIVE_AND_SORT_BY_TIME | FS_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_SEPARATOR | 0xFFFE | Разделитель между паттернами для поиска |
| FS_MATCH_PATH_SEPARATOR | 0xFFFD | Разделитель между путями для поиска |
| FS_MATCH_PATH_NONREC_SEPARATOR | 0xFFFC | ? |
| FS_MATCH_PATH_EXCLUDE_SEPARATOR | 0xFFFB | Разделитель между путями, которые нужно исключить из поиска |
| FS_MATCH_PATH_NONREC_EXCLUDE_SEPARATOR | 0xFFFA | ? |
Пример
// Ищем все mp3 файлы на флешке в папке аудио DL_FsSSearch(search, L"file://b/mobile/audio/\0xFFFE*.mp3", &handle, &count, DL_FS_OWNER_RESERVED);