2009-10-29 29 views
0

我正在開發一種文件系統驅動程序。 Windows對我的文件系統的所有讀取請求都由驅動程序實現決定。在Windows文件系統中檢測元數據只讀請求

我想區分「正常」閱讀請求和那些只想從文件中獲取元數據的人。 (Windows讀取文件的第一個4K,然後停止閱讀)。

Windows是否以某種方式標記此元數據?爲了以不同的方式處理這兩種操作將是非常有用的。

在一個典型的CreateFile調用中,我們有AccessMode,ShareMode,CreationDisposition和FlagsAndAttributes參數(是DWORD),我不確定是否有可能提取所需操作的一些線索。

感謝您閱讀:)

+0

請願 - >分區? – 2009-10-29 16:26:46

+0

嗯,實際上,我需要區分的是正常讀取操作和僅用於元數據的讀取操作。沒有涉及分區:) – HyLian 2009-10-30 08:06:43

+0

我認爲他的意思是「請求」,他寫了「請願書」。英語幾乎相同,而不是程序員的行話。 – MSalters 2009-10-30 10:38:09

回答

0

我建議您獲取SysInternals文件監控工具。它捕獲每次調用的堆棧跟蹤,並且由於它理解PDB甚至可以顯示函數名稱。這應該可以讓你弄清楚這個特定通話的很多細節。

+0

我檢查了Procmon(現在filemon是在procmon內),並且這兩種請求之間的差異很小。 我沒有找到任何明確的證據可以幫助我區分請求。 :( – HyLian 2009-11-02 15:10:14

+0

然後看起來,你的第一個問題的答案是「不」 – MSalters 2009-11-02 15:30:49

0

在重讀時,看起來問題在於尋找錯誤的地方進行優化。爲什麼不把第一個4KB的每個請求作爲元數據請求處理?這個假設沒有什麼壞處。

如果您真的只需要4KB的I/O,那麼如果您要做100 MB的真實I/O,那麼相反的假設會是有害的。但是如果你需要100 MB的話,對於第一個4KB的小型優化最多隻會導致一次性小型混亂,從而導致本身冗長的操作。

+0

其實這就是我現在正在做的事情。它的工作,但我不知道它是否可以有更多的奉獻。 – HyLian 2009-11-03 10:45:12

0

這不是Windows,而是執行掃描文件以提取元數據的Windows資源管理器。此外,您還將面對讀取以創建縮略圖。

將驅動器作爲遠程/網絡報告給Windows將使Explorer讀取更少的信息並減少文件系統的負載,但不幸的是似乎無法完全阻止這種讀取。

相關問題