2011-01-07 105 views
0

我有一個任務來實現像這樣的行爲的服務。 我的問題是:Windows索引服務如何工作?

索引服務如何記住哪些文件已被索引,哪些文件發生了變化,需要重新索引它們?

此外,我可以停止此服務,然後在幾天後啓動它,它會繼續工作。 它有自己的數據庫與關於文件的信息?

謝謝

回答

1

通常情況下,索引服務停留在通過調用FindFirstChangeNotification創建手柄使用WaitForSingleObject/WaitForMultipleObjects背景。如果你想支持索引服務可以被關閉(或者用於已經存在的目錄),你應該確保在每個文件上存儲你最後一次索引運行的時間戳。您可以將它與給定文件的LastWriteTime進行比較。

編輯:你應該使用ReadDirectoryChangesW和另一個線程異步索引的文件,以確保不會錯過任何更改。你可以爲每個文件產生新的線索來索引(昂貴),或者使用一個工作隊列和固定數量的工作線程(最好是1或2)

+0

好的,thnx。看起來停止/啓動服務後重新掃描文件系統並閱讀其數據庫,以檢查自上次活動後發生了什麼變化? – Oleg 2011-01-07 11:06:35