DL FsSSearch: различия между версиями
(→ÃÂÿøÃÂðýøõ) | Synergy (обсуждение | вклад) | ||
(не показано 36 промежуточных версий 34 участников) | |||
Строка 1: | Строка 1: | ||
− | <tt>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);</tt> | + | <tt>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);</tt><metadesc>Функция DL для синхронного поиска файлов</metadesc> |
− | + | == Описание == | |
+ | Функция [[Device Layer|DL]] для синхронного поиска файлов | ||
− | == | + | == Параметры == |
#'''FS_SEARCH_PARAMS_T params | #'''FS_SEARCH_PARAMS_T params | ||
− | #:[[#FS_SEARCH_PARAMS_T| | + | #:[[#FS_SEARCH_PARAMS_T|Параметры для поиска]] |
#'''WCHAR *search_string | #'''WCHAR *search_string | ||
− | #:[[# | + | #:[[#Строка для поиска|Строка для поиска]] |
#'''FS_SEARCH_HANDLE_T *handle | #'''FS_SEARCH_HANDLE_T *handle | ||
− | #: | + | #:Указатель на переменную, в которую возвращается идентификатор поиска |
#'''UINT16 *res_count | #'''UINT16 *res_count | ||
− | #: | + | #:Указатель на переменную, куда сохранится количество результатов поиска |
#'''DL_FS_OWNER_T owner_id | #'''DL_FS_OWNER_T owner_id | ||
− | #: | + | #:Идентификатор владельца файла, обычно 0 |
---- | ---- | ||
Строка 25: | Строка 26: | ||
UINT8 flags; | UINT8 flags; | ||
#endif | #endif | ||
− | UINT16 attrib; // | + | UINT16 attrib; // В результат попадают те файлы, у которых (аттрибуты & mask == attrib) |
UINT16 mask; | UINT16 mask; | ||
} FS_SEARCH_PARAMS_T; | } FS_SEARCH_PARAMS_T; | ||
</pre> | </pre> | ||
− | + | ==== Значения флагов ==== | |
+ | Для формирования поля '''flags''' структуры [[#FS_SEARCH_PARAMS_T|FS_SEARCH_PARAMS_T]], можно комбинировать следующие флаги с помощью операции "логическое или", например | ||
+ | <pre> | ||
+ | FS_SEARCH_PATH_START | FS_SEARCH_RECURSIVE | ||
+ | </pre> | ||
+ | {| border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" | ||
+ | |- | ||
+ | | style="width:200px" |'''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_SEARCH_PARAMS_T]], можно комбинировать следующие флаги с помощью операции "логическое или": | |
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" | {| border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" | ||
|- | |- | ||
− | | style="width:200px" |'''FS_ATTR_DEFAULT''' || | + | | style="width:200px" |'''FS_ATTR_DEFAULT''' || По умолчанию |
|- | |- | ||
− | |'''FS_ATTR_READONLY''' || | + | |'''FS_ATTR_READONLY''' || Файл с аттрибутом только чтение |
|- | |- | ||
− | |'''FS_ATTR_HIDDEN''' || | + | |'''FS_ATTR_HIDDEN''' || Файл с аттрибутом скрытый |
|- | |- | ||
− | |'''FS_ATTR_SYSTEM''' || | + | |'''FS_ATTR_SYSTEM''' || Файл с аттрибутом системный |
|- | |- | ||
− | |'''FS_ATTR_VOLUME''' || | + | |'''FS_ATTR_VOLUME''' || Аттрибут диска |
|- | |- | ||
− | |'''FS_ATTR_DIRECTORY''' || | + | |'''FS_ATTR_DIRECTORY''' || Аттрибут папки |
|- | |- | ||
− | |'''FS_ATTR_ARCHIVE''' || | + | |'''FS_ATTR_ARCHIVE''' || Файл с аттрибутом архивный |
|} | |} | ||
Строка 54: | Строка 82: | ||
---- | ---- | ||
− | === | + | === Строка для поиска === |
− | + | Для формирования поисковой строки, сначала пишем папку(ки), где будем искать: | |
<pre> | <pre> | ||
L"file://b/mobile/audio/" | L"file://b/mobile/audio/" | ||
</pre> | </pre> | ||
− | + | В поисковой строке также присутствуют спецсимволы-разделители. Вставляются их значения прямо в текст строки с помощью символа "\". Например, если мы хотим добавить в строку поиска паттерну для поиска, то мы добавляем разделитель FS_MATCH_SEPARATOR (0xFFFE), и сразу после него пишем паттерны (*.mp3 для музыки): | |
<pre> | <pre> | ||
L"file://b/mobile/audio/\0xFFFE*.mp3" | L"file://b/mobile/audio/\0xFFFE*.mp3" | ||
</pre> | </pre> | ||
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" | {| border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" | ||
− | ! | + | ! Название !! Значение !! Описание |
|- | |- | ||
− | | style="width:200px" |'''FS_MATCH_SEPARATOR''' || style="width:90px" | 0xFFFE || | + | | style="width:200px" |'''FS_MATCH_SEPARATOR''' || style="width:90px" | 0xFFFE || Разделитель между паттернами для поиска |
|- | |- | ||
− | |'''FS_MATCH_PATH_SEPARATOR''' || 0xFFFD || | + | |'''FS_MATCH_PATH_SEPARATOR''' || 0xFFFD || Разделитель между путями для поиска |
|- | |- | ||
|'''FS_MATCH_PATH_NONREC_SEPARATOR''' || 0xFFFC || ? | |'''FS_MATCH_PATH_NONREC_SEPARATOR''' || 0xFFFC || ? | ||
|- | |- | ||
− | |'''FS_MATCH_PATH_EXCLUDE_SEPARATOR''' || 0xFFFB || | + | |'''FS_MATCH_PATH_EXCLUDE_SEPARATOR''' || 0xFFFB || Разделитель между путями, которые нужно исключить из поиска |
|- | |- | ||
|'''FS_MATCH_PATH_NONREC_EXCLUDE_SEPARATOR''' || 0xFFFA || ? | |'''FS_MATCH_PATH_NONREC_EXCLUDE_SEPARATOR''' || 0xFFFA || ? | ||
|} | |} | ||
− | == | + | == Пример == |
<pre> | <pre> | ||
− | // | + | // Ищем все mp3 файлы на флешке в папке аудио |
DL_FsSSearch(search, L"file://b/mobile/audio/\0xFFFE*.mp3", &handle, &count, DL_FS_OWNER_RESERVED); | DL_FsSSearch(search, L"file://b/mobile/audio/\0xFFFE*.mp3", &handle, &count, DL_FS_OWNER_RESERVED); | ||
</pre> | </pre> | ||
− | [[ | + | [[Категория:Функции Файловой Системы]] |
Текущая версия на 04:48, 8 апреля 2019
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);