Windows文件系統(tǒng)過濾驅動程序介紹
文件系統(tǒng)過濾驅動程序攔截針對某個文件系統(tǒng)或另一個文件系統(tǒng)過濾驅動程序的請求。通過在請求到達預期目標之前攔截請求,過濾器驅動程序可以擴展或替換由請求的原始目標提供的功能。過濾器驅動程序概念是WindowsI/O子系統(tǒng)最強大的體系結構特性之一。過濾器可以通過簡單地將自己附加到現(xiàn)有設備上來為該設備的功能增加價值。當然,過濾設備不需要更改底層設備的驅動程序。
在Windows系統(tǒng)中,最常見也是最強大的一個地方是在文件系統(tǒng)上插入過濾器。文件系統(tǒng)過濾器在I/O操作到達文件系統(tǒng)之前攔截I/O操作(來自應用程序和系統(tǒng)本身)。這使它們能夠監(jiān)視、跟蹤、管理、操作,甚至在文件系統(tǒng)看到I/O操作之前接受或拒絕它們。大多數(shù)人熟悉的文件系統(tǒng)過濾器類型可能是防病毒過濾器。這種類型的過濾器通常攔截文件打開請求,并在過濾器(或者更可能是在用戶模式下運行的相關服務)掃描正在打開的文件以查找病毒時將其掛起。如果發(fā)現(xiàn)任何病毒,則可以取消打開的請求。如果未發(fā)現(xiàn)病毒,則允許打開的請求正常完成。
文件系統(tǒng)過濾器通常用于從剛才描述的防病毒和惡意軟件掃描,到軟件許可證跟蹤和管理,到審計和更改文件跟蹤,再到訪問透明數(shù)據加密和解密。文件系統(tǒng)過濾器還可以用于其他不太明顯的目的。例如,由于文件系統(tǒng)過濾器可以查看哪些文件被創(chuàng)建和寫入,因此它們通常在備份產品和分層存儲子系統(tǒng)中發(fā)揮關鍵作用。由于文件系統(tǒng)過濾器能夠成為應用程序看到的文件系統(tǒng)“名稱空間”的第一個解釋器,因此它們還可以執(zhí)行強大的文件重定向操作,例如使遠程文件(例如存儲在云中的某個地方的文件)看起來是本地的。
自從在WindowsXPSP2中引入以來,文件系統(tǒng)迷你過濾器模型已經成為實現(xiàn)文件系統(tǒng)過濾器的首選機制。這是有充分理由的,因為minfilter模型為文件系統(tǒng)過濾器驅動程序開發(fā)提供了一個優(yōu)秀的組織和支持框架。由于GitHub上有相當好的文檔和一組重要的示例,許多開發(fā)人員認為編寫文件系統(tǒng)minfilter完全在他們的能力范圍內。他們是對的,只要他們在一定的范圍內。
標準迷你過濾器驅動程序
最常見的文件系統(tǒng)類型是minfilter,它監(jiān)視并可能跟蹤或記錄在文件系統(tǒng)級別執(zhí)行的各種操作。某些迷你過濾器(如防病毒掃描程序)甚至可能批準或不批準某些操作。但是,這些篩選器不參與更改它們篩選的文件中數(shù)據的視圖或大小。我們稱這樣的過濾器為標準迷你過濾器,因為它們代表了存在的絕大多數(shù)文件系統(tǒng)迷你過濾器。
隔離迷你過濾器驅動程序
隔離迷你過濾器驅動程序是一個Windows文件系統(tǒng)迷你過濾器驅動程序,它將文件數(shù)據的視圖與同一文件的實際底層數(shù)據分開。隔離迷你過濾器的典型示例是訪問透明加密/解密過濾器。隔離迷你過濾器使用“相同堆棧”概念,并通過為每個視圖提供唯一的緩存部分來提供不同的視圖。透明的加密隔離過濾器驅動程序可以創(chuàng)建訪問數(shù)據的兩個視圖,一個是從本地存儲加密的,因此您的數(shù)據始終在本地磁盤中加密,另一個是解密給授權用戶,對于每個打開的文件,過濾器驅動程序將創(chuàng)建一個唯一的內存緩存,因此如果用戶或進程具有不同的權限,則不會看到相同的數(shù)據視圖。當進程或用戶被授權訪問加密文件時,過濾器驅動程序將在讀取請求期間解密內存中的數(shù)據,因此被授權的進程可以獲得純文本,或者將獲得加密文本。當加密過濾器驅動程序關閉時,加密文件無法訪問,當應用程序打開加密文件時,它將獲得密文,因此沒有啟用加密過濾器驅動程序,任何人都無法讀取加密文件。
隔離過濾器將文件數(shù)據的視圖與文件系統(tǒng)存儲的實際底層數(shù)據分開(或“隔離”)。編寫這種類型的Minifilter通常與編寫標準的Windows文件系統(tǒng)一樣復雜,因為它涉及Minifilter、Windows緩存管理器和Windows內存管理器之間的直接和密切的交互。事實上,一些有經驗的開發(fā)者認為Isolationminfilter甚至比文件系統(tǒng)開發(fā)更困難,因為當你在編寫Isolationminfilter時,你必須有效地將Windows文件系統(tǒng)的實現(xiàn)“適配”到FilterManager提供的API中。因此,除了標準迷你過濾器的開發(fā)人員面臨的挑戰(zhàn)之外,隔離迷你過濾器的開發(fā)人員還要處理許多明顯更復雜的問題。
為了實現(xiàn)文件數(shù)據與實際底層數(shù)據的分離視圖,我們需要兩種類型的文件對象,第一個文件對象是上層文件對象,它是與應用程序相關聯(lián)的開放實例,它代表應用程序的文件視圖,它包含解密數(shù)據,數(shù)據被隔離過濾器放入緩存,與緩存管理器協(xié)同工作。我們稱為的另一個文件對象是影子文件對象,它由隔離迷你過濾器創(chuàng)建,并表示迷你過濾器(以及底層文件系統(tǒng))對文件的視圖。此文件對象的緩存部分中的數(shù)據是加密的,隔離迷你過濾器使用影子文件對象與底層文件系統(tǒng)進行交互。影子文件對象是在IRP_MJ_CREATE調度處理程序期間由隔離過濾器驅動程序創(chuàng)建的,并將該影子文件對象發(fā)送到底層FSD。為了控制上層文件對象,隔離過濾器將填充文件對象結構的FsContext/FsContext2字段,現(xiàn)在上層文件對象屬于隔離過濾器,為了控制緩存,隔離過濾器還將設置SOP結構來指向由過濾器創(chuàng)建的控制數(shù)據部分。
隔離過濾器驅動程序的最大挑戰(zhàn)是處理由用戶發(fā)送的上層文件對象的所有IOs,如果上層文件對象被發(fā)送到NTFS,NTFS將在一個名為NtfsDecodeFileObject的函數(shù)中爆炸。開發(fā)隔離迷你過濾器更像是開發(fā)完整的Windows文件系統(tǒng),而不是開發(fā)標準迷你過濾器,因為它需要與Windows緩存管理器和內存管理器密切交互。因此,對于大多數(shù)不尋求成為Windows文件系統(tǒng)專家的開發(fā)人員來說,開發(fā)隔離迷你過濾器不太可能是一項能夠成功完成的任務。
用于虛擬云存儲的隔離迷你過濾器:隔離迷你過濾器模型不僅用于透明數(shù)據加密和解密系統(tǒng)。IsolationMinifilter模型也可用于虛擬云存儲,它可以向用戶呈現(xiàn)虛擬文件結構視圖,該視圖的數(shù)據與遠程云存儲相關聯(lián),當用戶讀取虛擬文件的數(shù)據時,過濾器可以逐塊拉回數(shù)據。
編輯:黃飛
-
WINDOWS
+關注
關注
3文章
3541瀏覽量
88621 -
文件系統(tǒng)
+關注
關注
0文章
284瀏覽量
19904 -
過濾器
+關注
關注
1文章
428瀏覽量
19593 -
SDK
+關注
關注
3文章
1035瀏覽量
45899 -
解釋器
+關注
關注
0文章
103瀏覽量
6509
原文標題:Easefilter--Windows文件系統(tǒng)隔離過濾器驅動SDK
文章出處:【微信號:哲想軟件,微信公眾號:哲想軟件】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論