Как работает сервис индексации Windows?
-
30-09-2019 - |
Вопрос
У меня есть задача для реализации службы с поведением, как этот. Мой вопрос:
Как сервис индексации помните, какие файлы уже были проиндексированы и что нет, какие файлы изменились и должны их повторно обратиться?
Кроме того, я могу остановить эту услугу, а затем начать его через несколько дней, он продолжает работать. У него есть своя база данных с информацией о файлах?
Спасибо
Решение
Обычно индексация-сервис остается на заднем плане, используя WaitForSingleObject / WaitForMultipleObjects
на ручках, созданных звонками на FindFirstChangeNotification
. Отказ Если вы хотите поддержать, что служба индексации может быть выключена (или использоваться для уже существующего каталога), вы обязательно должны хранить временную метку вашего последнего индекса в каждом файле. Вы можете сравнить это с LastrriteTime. данного файла.
Редактировать: вы должны использовать Readdirectorychangesw. И другой нить, который асинхронно индексирует файлы, чтобы не пропустить никаких изменений. Вы можете либо вызывать новые потоки для каждого файла для указателя (дорого) или использовать очередь задания и фиксированное количество рабочих потоков (предпочтительно 1 или 2)