当前位置: 代码迷 >> 驱动开发 >> 文件过滤驱动应当挂载在哪里
  详细解决方案

文件过滤驱动应当挂载在哪里

热度:70   发布时间:2016-04-28 10:09:29.0
文件过滤驱动应该挂载在哪里?
比如我想过滤D盘的信息,使用IoAttachDevice

NTSTATUS 
  IoAttachDevice(
    IN PDEVICE_OBJECT  SourceDevice,
    IN PUNICODE_STRING  TargetDevice,
    OUT PDEVICE_OBJECT  *AttachedDevice
    );

SourceDevice 是IoCreateDevice新创建的过滤驱动。
那TargetDevice ,也就是D盘的设备名字是什么?

------解决方案--------------------
挂在卷设备(VDO)上。
文件系统驱动会有两种DO,一种是控制设备对象CDO,代表整个文件系统,用于接收各种请求,CDO必须有名字,所有已安装的文件系统的CDO会串成一个全局的文件系统队列;另一种是卷设备对象(VDO),当文件系统检测到有一个新的卷装载进来的时候,会创建一个VDO来代表这个卷,所有的访问请求都会发到卷设备。
CDO和VDO构成文件系统堆栈。
文件系统驱动是在需要的时候才加载的,显然如果系统中没有任何比如说FAT存储设备,没有必要把整个文件系统驱动都加载进来,在文件系统装载之前,代表它的是一个很小的驱动叫文件系统识别器(File System Recognizer),这个东西的作用就是识别一个存储设备使用的文件系统是不是自己所代表的这种文件系统,如果是的话就把真正的文件系统驱动给加载进来。

在文件系统堆栈下面的是存储设备堆栈。
  相关解决方案