0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Windows文件系統(tǒng)過濾驅(qū)動程序介紹

哲想軟件 ? 來源:哲想軟件 ? 2023-10-24 11:48 ? 次閱讀

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)。

c6d7b254-7216-11ee-939d-92fbcf53809c.png

標(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ū)動程序,任何人都無法讀取加密文件。

c6ea529c-7216-11ee-939d-92fbcf53809c.png

隔離過濾器將文件數(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ù)。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 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
    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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    WDM設(shè)備驅(qū)動程序開發(fā),Windows 2000/XP WD

    Windows 2000/XP WDM設(shè)備驅(qū)動程序開發(fā)主要介紹DriverStudio開發(fā)工具開發(fā)Windows 2000/XP下的WDM設(shè)備驅(qū)
    發(fā)表于 09-13 22:58 ?0次下載
    WDM設(shè)備<b class='flag-5'>驅(qū)動程序</b>開發(fā),<b class='flag-5'>Windows</b> 2000/XP WD

    Windows 2000/XP下I/O設(shè)備驅(qū)動程序的設(shè)計(jì)

    本文介紹Windows 2000/XP 下WDM 驅(qū)動程序的基本設(shè)計(jì)方法;闡述了I/O 設(shè)備驅(qū)動程序的基本構(gòu)成,硬件資源的配置和訪問的方法;提出了設(shè)備
    發(fā)表于 06-12 13:46 ?18次下載

    Linux內(nèi)核空間設(shè)備驅(qū)動程序的開發(fā)

    本文詳細(xì)介紹了Linux平臺下內(nèi)核空間設(shè)備驅(qū)動程序的開發(fā)。在比較proc和dev兩種文件系統(tǒng)的基礎(chǔ)上,分別以PCI設(shè)備和USB設(shè)備的驅(qū)動程序開發(fā)為實(shí)例來
    發(fā)表于 08-19 08:44 ?18次下載

    IFS過濾驅(qū)動在保護(hù)文件系統(tǒng)中的應(yīng)用

    基于Windows NT 內(nèi)核的 IFS 過濾驅(qū)動模型,并在此基礎(chǔ)上給出了一個(gè)基于用戶身份驗(yàn)證的文件系統(tǒng)保護(hù)的實(shí)現(xiàn)方案,并通過附加的性能優(yōu)化措施和安全保護(hù)手段提升
    發(fā)表于 01-27 13:58 ?10次下載

    PCI設(shè)備WINDOWS驅(qū)動程序的開發(fā)

    PCI設(shè)備WINDOWS驅(qū)動程序的開發(fā) 本文主要介紹了在Windows9x操作系統(tǒng)下開發(fā)PCI設(shè)備驅(qū)動
    發(fā)表于 05-03 11:54 ?3368次閱讀

    Windows WDM設(shè)備驅(qū)動程序開發(fā)指南

    書主要介紹Windows 98和Windows 2000新的驅(qū)動程序模型(WDM)。描述了WDM設(shè)備驅(qū)動程序的結(jié)構(gòu)、功能和開發(fā)方法.
    發(fā)表于 12-12 15:31 ?0次下載
    <b class='flag-5'>Windows</b> WDM設(shè)備<b class='flag-5'>驅(qū)動程序</b>開發(fā)指南

    Windows CE驅(qū)動程序開發(fā)

    不同的嵌入式系統(tǒng)硬件平臺,往往有其獨(dú)有或特殊的設(shè)備,而這些設(shè)備的Windows CE驅(qū)動程序設(shè)計(jì)問題是開發(fā)人員經(jīng)常遇到的。本文著重闡述了Windows CE體系結(jié)構(gòu)和中斷機(jī)制、
    發(fā)表于 04-18 10:13 ?0次下載

    Windows CE設(shè)備驅(qū)動程序開發(fā)

    本文介紹Windows CE 體系結(jié)構(gòu)和開發(fā) wince 設(shè)備驅(qū)動程序的過程,闡述了設(shè)備驅(qū)動程序模型、設(shè)備驅(qū)動結(jié)構(gòu)和中斷處理。
    發(fā)表于 04-18 10:13 ?0次下載

    基于Windows CE.NET的設(shè)備驅(qū)動程序開發(fā)

    本文闡述了設(shè)備驅(qū)動程序的概念和結(jié)構(gòu) 介紹Windows CE. NET環(huán)境下開發(fā)驅(qū)動程序的特點(diǎn)以及一些常用的開發(fā)工具 并以華恒科技的 HHARM9 - EDU 開發(fā)板的觸摸屏
    發(fā)表于 04-18 11:28 ?0次下載

    Linux新的exFAT文件系統(tǒng)驅(qū)動程序要來了

    微軟開放 exFAT 技術(shù)并積極將其添加到 Linux 內(nèi)核后,Linux Kernel 5.4 帶來了對 exFAT 文件系統(tǒng)的初步支持?,F(xiàn)在,基于早期代碼進(jìn)行改進(jìn),新的 exFAT 文件系統(tǒng)驅(qū)動程序將搭載在 Linux Ke
    的頭像 發(fā)表于 03-08 08:40 ?2740次閱讀

    基于WDM驅(qū)動程序模型實(shí)現(xiàn)過濾驅(qū)動程序的開發(fā)設(shè)計(jì)

    的升級,WDM已經(jīng)成為Windows 2000系統(tǒng)驅(qū)動程序開發(fā)的主流。作為WDM模型之中一類特殊的驅(qū)動程序,過濾
    的頭像 發(fā)表于 09-19 15:54 ?3332次閱讀
    基于WDM<b class='flag-5'>驅(qū)動程序</b>模型實(shí)現(xiàn)<b class='flag-5'>過濾</b>器<b class='flag-5'>驅(qū)動程序</b>的開發(fā)設(shè)計(jì)

    Windows驅(qū)動程序分享

    電子發(fā)燒友網(wǎng)站提供《Windows驅(qū)動程序分享.zip》資料免費(fèi)下載
    發(fā)表于 07-26 17:43 ?0次下載
    <b class='flag-5'>Windows</b><b class='flag-5'>驅(qū)動程序</b>分享

    Windows驅(qū)動程序

    電子發(fā)燒友網(wǎng)站提供《Windows驅(qū)動程序.zip》資料免費(fèi)下載
    發(fā)表于 07-26 17:17 ?0次下載
    <b class='flag-5'>Windows</b><b class='flag-5'>驅(qū)動程序</b>

    Windows驅(qū)動程序案例

    電子發(fā)燒友網(wǎng)站提供《Windows驅(qū)動程序案例.zip》資料免費(fèi)下載
    發(fā)表于 07-28 11:42 ?0次下載
    <b class='flag-5'>Windows</b><b class='flag-5'>驅(qū)動程序</b>案例

    分享Windows驅(qū)動程序

    電子發(fā)燒友網(wǎng)站提供《分享Windows驅(qū)動程序.zip》資料免費(fèi)下載
    發(fā)表于 08-04 11:46 ?2次下載
    分享<b class='flag-5'>Windows</b><b class='flag-5'>驅(qū)動程序</b>