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

Windows 2000/XP下I/O設(shè)備驅(qū)動程序的設(shè)計(jì)
Linux內(nèi)核空間設(shè)備驅(qū)動程序的開發(fā)
IFS過濾驅(qū)動在保護(hù)文件系統(tǒng)中的應(yīng)用
PCI設(shè)備WINDOWS驅(qū)動程序的開發(fā)
Windows WDM設(shè)備驅(qū)動程序開發(fā)指南

Windows CE驅(qū)動程序開發(fā)
Windows CE設(shè)備驅(qū)動程序開發(fā)
基于Windows CE.NET的設(shè)備驅(qū)動程序開發(fā)
Linux新的exFAT文件系統(tǒng)驅(qū)動程序要來了
基于WDM驅(qū)動程序模型實(shí)現(xiàn)過濾器驅(qū)動程序的開發(fā)設(shè)計(jì)

評論