Как работает служба индексирования Windows? - PullRequest
0 голосов
/ 07 января 2011

У меня есть задача реализовать сервис с таким поведением. Мой вопрос:

Как служба индексирования запоминает, какие файлы уже проиндексированы, а что нет, какие файлы изменились и нужно их переиндексировать?

Кроме того, я могу остановить эту службу, а затем запустить ее через несколько дней, она продолжает работать. Есть ли у него собственная база данных с информацией о файлах?

Спасибо

1 Ответ

1 голос
/ 07 января 2011

Обычно служба индексирования остается в фоновом режиме, используя WaitForSingleObject / WaitForMultipleObjects на дескрипторах, созданных при вызовах FindFirstChangeNotification. Если вы хотите поддержать, что служба индексирования может быть закрыта (или использоваться для уже существующего каталога), вам обязательно следует хранить временную метку вашего последнего запуска индекса для каждого файла. Вы можете сравнить это с LastWriteTime данного файла.

РЕДАКТИРОВАТЬ: вы должны использовать ReadDirectoryChangesW и другой поток, который асинхронно индексирует файлы, чтобы не пропустить никаких изменений. Вы можете создавать новые потоки для каждого файла для индексации (дорого) или использовать очередь заданий и фиксированное количество рабочих потоков (желательно 1 или 2)

...