看起來主要技術 Change Journal的Win32 API + USN,是先遍立後建立監控,但不是一個一個檔案建立監控,而是直接監控所有
使用原因
文件監控的應用,發現使用Windows API(ReadDirectoryChangesW)..如果變化量大又密集時,丟失通知現象很嚴重。..大部分的Windows用戶都轉到NTFS系統,所以打算採用分析NTFS的Change Journal(更改日誌)的方法實現監控功能。
Everything就是利用了NTFS系統的這個特性,通過讀取和監控USN(後面會講)而不是掃描文件來構建索引,所以搜索速度飛快
from NTFS Change Journal(USN Journal)詳解 - 簡書
有高手開源講解原理 yuzhengyang/Everything: 探索Everything背後的技術(USN和MFT)
擷取看到幾個重點
① 順序遍歷MFT上的每條數據, 從而快速獲得某個Volume上
的所有文件和文件夾的名字
② 通過等待Change Journal的下一條記錄來做到對NTFS文
件系統變化的監視
- 得到 Volume 的句柄 ( via CreateFile 函數 )
- 打開 Volume 上的 Change Journal
- 針對不同的操作( 遍歷, 篩選, 等待新記錄等等)構造輸入
參數的結構體- 調用 DeviceIoControl 函數
- 分析輸出結果(通常是一片內存塊)