0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Windows文件系统过滤驱动程序介绍

哲想软件 来源:哲想软件 2023-10-24 11:48 次阅读

Windows文件系统过滤驱动程序介绍

文件系统过滤驱动程序拦截针对某个文件系统或另一个文件系统过滤驱动程序的请求。通过在请求到达预期目标之前拦截请求,过滤器驱动程序可以扩展或替换由请求的原始目标提供的功能。过滤器驱动程序概念是WindowsI/O子系统最强大的体系结构特性之一。过滤器可以通过简单地将自己附加到现有设备上来为该设备的功能增加价值。当然,过滤设备不需要更改底层设备的驱动程序。

在Windows系统中,最常见也是最强大的一个地方是在文件系统上插入过滤器。文件系统过滤器在I/O操作到达文件系统之前拦截I/O操作(来自应用程序和系统本身)。这使它们能够监视、跟踪、管理、操作,甚至在文件系统看到I/O操作之前接受或拒绝它们。大多数人熟悉的文件系统过滤器类型可能是防病毒过滤器。这种类型的过滤器通常拦截文件打开请求,并在过滤器(或者更可能是在用户模式下运行的相关服务)扫描正在打开的文件以查找病毒时将其挂起。如果发现任何病毒,则可以取消打开的请求。如果未发现病毒,则允许打开的请求正常完成。

文件系统过滤器通常用于从刚才描述的防病毒和恶意软件扫描,到软件许可证跟踪和管理,到审计和更改文件跟踪,再到访问透明数据加密和解密。文件系统过滤器还可以用于其他不太明显的目的。例如,由于文件系统过滤器可以查看哪些文件被创建和写入,因此它们通常在备份产品和分层存储子系统中发挥关键作用。由于文件系统过滤器能够成为应用程序看到的文件系统“名称空间”的第一个解释器,因此它们还可以执行强大的文件重定向操作,例如使远程文件(例如存储在云中的某个地方的文件)看起来是本地的。

自从在WindowsXPSP2中引入以来,文件系统迷你过滤器模型已经成为实现文件系统过滤器的首选机制。这是有充分理由的,因为minfilter模型为文件系统过滤器驱动程序开发提供了一个优秀的组织和支持框架。由于GitHub上有相当好的文档和一组重要的示例,许多开发人员认为编写文件系统minfilter完全在他们的能力范围内。他们是对的,只要他们在一定的范围内。

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

标准迷你过滤器驱动程序

最常见的文件系统类型是minfilter,它监视并可能跟踪或记录在文件系统级别执行的各种操作。某些迷你过滤器(如防病毒扫描程序)甚至可能批准或不批准某些操作。但是,这些筛选器不参与更改它们筛选的文件中数据的视图或大小。我们称这样的过滤器为标准迷你过滤器,因为它们代表了存在的绝大多数文件系统迷你过滤器。

隔离迷你过滤器驱动程序

隔离迷你过滤器驱动程序是一个Windows文件系统迷你过滤器驱动程序,它将文件数据的视图与同一文件的实际底层数据分开。隔离迷你过滤器的典型示例是访问透明加密/解密过滤器。隔离迷你过滤器使用“相同堆栈”概念,并通过为每个视图提供唯一的缓存部分来提供不同的视图。透明的加密隔离过滤器驱动程序可以创建访问数据的两个视图,一个是从本地存储加密的,因此您的数据始终在本地磁盘中加密,另一个是解密给授权用户,对于每个打开的文件,过滤器驱动程序将创建一个唯一的内存缓存,因此如果用户或进程具有不同的权限,则不会看到相同的数据视图。当进程或用户被授权访问加密文件时,过滤器驱动程序将在读取请求期间解密内存中的数据,因此被授权的进程可以获得纯文本,或者将获得加密文本。当加密过滤器驱动程序关闭时,加密文件无法访问,当应用程序打开加密文件时,它将获得密文,因此没有启用加密过滤器驱动程序,任何人都无法读取加密文件。

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

隔离过滤器将文件数据的视图与文件系统存储的实际底层数据分开(或“隔离”)。编写这种类型的Minifilter通常与编写标准的Windows文件系统一样复杂,因为它涉及Minifilter、Windows缓存管理器和Windows内存管理器之间的直接和密切的交互。事实上,一些有经验的开发者认为Isolationminfilter甚至比文件系统开发更困难,因为当你在编写Isolationminfilter时,你必须有效地将Windows文件系统的实现“适配”到FilterManager提供的API中。因此,除了标准迷你过滤器的开发人员面临的挑战之外,隔离迷你过滤器的开发人员还要处理许多明显更复杂的问题。

为了实现文件数据与实际底层数据的分离视图,我们需要两种类型的文件对象,第一个文件对象是上层文件对象,它是与应用程序相关联的开放实例,它代表应用程序的文件视图,它包含解密数据,数据被隔离过滤器放入缓存,与缓存管理器协同工作。我们称为的另一个文件对象是影子文件对象,它由隔离迷你过滤器创建,并表示迷你过滤器(以及底层文件系统)对文件的视图。此文件对象的缓存部分中的数据是加密的,隔离迷你过滤器使用影子文件对象与底层文件系统进行交互。影子文件对象是在IRP_MJ_CREATE调度处理程序期间由隔离过滤器驱动程序创建的,并将该影子文件对象发送到底层FSD。为了控制上层文件对象,隔离过滤器将填充文件对象结构的FsContext/FsContext2字段,现在上层文件对象属于隔离过滤器,为了控制缓存,隔离过滤器还将设置SOP结构来指向由过滤器创建的控制数据部分。

隔离过滤器驱动程序的最大挑战是处理由用户发送的上层文件对象的所有IOs,如果上层文件对象被发送到NTFS,NTFS将在一个名为NtfsDecodeFileObject的函数中爆炸。开发隔离迷你过滤器更像是开发完整的Windows文件系统,而不是开发标准迷你过滤器,因为它需要与Windows缓存管理器和内存管理器密切交互。因此,对于大多数不寻求成为Windows文件系统专家的开发人员来说,开发隔离迷你过滤器不太可能是一项能够成功完成的任务。

用于虚拟云存储的隔离迷你过滤器:隔离迷你过滤器模型不仅用于透明数据加密和解密系统。IsolationMinifilter模型也可用于虚拟云存储,它可以向用户呈现虚拟文件结构视图,该视图的数据与远程云存储相关联,当用户读取虚拟文件的数据时,过滤器可以逐块拉回数据。

编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3440

    浏览量

    87144
  • 文件系统
    +关注

    关注

    0

    文章

    273

    浏览量

    19676
  • 过滤器
    +关注

    关注

    1

    文章

    407

    浏览量

    18991
  • SDK
    SDK
    +关注

    关注

    3

    文章

    966

    浏览量

    44696
  • 解释器
    +关注

    关注

    0

    文章

    98

    浏览量

    6421

原文标题:Easefilter--Windows文件系统隔离过滤器驱动SDK

文章出处:【微信号:哲想软件,微信公众号:哲想软件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux与Windows文件系统的不同之处

    Linux 的文件系统Windows 文件系统有很多不同之处。您不会找到任何驱动器号或反斜杠,但您会发现一个看起来很陌生的布局,其中文件
    的头像 发表于 03-15 10:23 1439次阅读

    Windows 2000/XP下I/O设备驱动程序的设计

    本文介绍Windows 2000/XP 下WDM 驱动程序的基本设计方法;阐述了I/O 设备驱动程序的基本构成,硬件资源的配置和访问的方法;提出了设备
    发表于 06-12 13:46 18次下载

    IFS过滤驱动在保护文件系统中的应用

    基于Windows NT 内核的 IFS 过滤驱动模型,并在此基础上给出了一个基于用户身份验证的文件系统保护的实现方案,并通过附加的性能优化措施和安全保护手段提升
    发表于 01-27 13:58 10次下载

    PCI设备WINDOWS驱动程序的开发

    PCI设备WINDOWS驱动程序的开发 本文主要介绍了在Windows9x操作系统下开发PCI设备驱动
    发表于 05-03 11:54 3228次阅读

    Windows WDM设备驱动程序开发指南

    书主要介绍Windows 98和Windows 2000新的驱动程序模型(WDM)。描述了WDM设备驱动程序的结构、功能和开发方法.
    发表于 12-12 15:31 0次下载
    <b class='flag-5'>Windows</b> WDM设备<b class='flag-5'>驱动程序</b>开发指南

    Windows CE驱动程序开发

    不同的嵌入式系统硬件平台,往往有其独有或特殊的设备,而这些设备的Windows CE驱动程序设计问题是开发人员经常遇到的。本文着重阐述了Windows CE体系结构和中断机制、
    发表于 04-18 10:13 0次下载

    Windows CE设备驱动程序开发

    本文介绍Windows CE 体系结构和开发 wince 设备驱动程序的过程,阐述了设备驱动程序模型、设备驱动结构和中断处理。
    发表于 04-18 10:13 0次下载

    Linux新的exFAT文件系统驱动程序要来了

    微软开放 exFAT 技术并积极将其添加到 Linux 内核后,Linux Kernel 5.4 带来了对 exFAT 文件系统的初步支持。现在,基于早期代码进行改进,新的 exFAT 文件系统驱动程序将搭载在 Linux Ke
    的头像 发表于 03-08 08:40 2375次阅读

    基于WDM驱动程序模型实现过滤驱动程序的开发设计

    的升级,WDM已经成为Windows 2000系统驱动程序开发的主流。作为WDM模型之中一类特殊的驱动程序过滤
    的头像 发表于 09-19 15:54 2821次阅读
    基于WDM<b class='flag-5'>驱动程序</b>模型实现<b class='flag-5'>过滤</b>器<b class='flag-5'>驱动程序</b>的开发设计

    Windows驱动程序的类型

    驱动程序不是一定需要与硬件通讯,如果需要访问操作系统核心数据,往往应用程序没有足够的权限,这种情况则需要在内核模式下进行访问。就上面5种驱动类型,笔者参考着微软的
    发表于 07-14 09:50 2695次阅读

    Windows驱动程序分享

    电子发烧友网站提供《Windows驱动程序分享.zip》资料免费下载
    发表于 07-26 17:43 0次下载
    <b class='flag-5'>Windows</b><b class='flag-5'>驱动程序</b>分享

    Windows驱动程序

    电子发烧友网站提供《Windows驱动程序.zip》资料免费下载
    发表于 07-26 17:17 0次下载
    <b class='flag-5'>Windows</b><b class='flag-5'>驱动程序</b>

    Windows驱动程序案例

    电子发烧友网站提供《Windows驱动程序案例.zip》资料免费下载
    发表于 07-28 11:42 0次下载
    <b class='flag-5'>Windows</b><b class='flag-5'>驱动程序</b>案例

    分享Windows驱动程序

    电子发烧友网站提供《分享Windows驱动程序.zip》资料免费下载
    发表于 08-04 11:46 2次下载
    分享<b class='flag-5'>Windows</b><b class='flag-5'>驱动程序</b>

    MegaRAID Windows驱动程序在自述文件重要提示

    电子发烧友网站提供《MegaRAID Windows驱动程序在自述文件重要提示.zip》资料免费下载
    发表于 08-22 10:29 0次下载
    MegaRAID <b class='flag-5'>Windows</b><b class='flag-5'>驱动程序</b>在自述<b class='flag-5'>文件</b>重要提示