什么是过滤驱动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是过滤驱动相关的知识,希望对你有一定的参考价值。

什么是过滤驱动?要求简单回答就可以了。

  过滤驱动就是挂载在其他驱动上,对某设备的irp进行拦截过滤作用,可以对设备进行功能扩展,或是数据加密等的驱动程序。

  比如:

  1. 可以对写入硬盘的数据做加密,然后读取的时候解密,这样对于用户来说,根本不知道有加密解密的过程,然后存在硬盘上的数据是加密的。

  2. 可以对已有驱动做一些扩展,或者改变已有驱动的功能。比如已有驱动一次只能写1024字节的数据,那么过滤驱动可以扩展到任何长度,然后分段调用已有驱动就是了。



  过滤驱动可以在功能型驱动的上面,称之为上层过滤驱动,或者高层,反正就这个意思。过滤驱动在功能型驱动下面,称之为下层过滤驱动。看示意图:

参考技术A 就是挂载在其他驱动上,对某设备的irp进行拦截过滤,可以对设备进行功能扩展,或是数据加密等,很灵活。本回答被提问者采纳

MongoDB C# 2.14 驱动过滤器.In

【中文标题】MongoDB C# 2.14 驱动过滤器.In【英文标题】:MongoDB C# 2.14 Driver Filter.In 【发布时间】:2022-01-03 23:09:27 【问题描述】:

我正在尝试使用Filter.In API 获取文档的数组字段具有匹配值的所有文档。

Filter.In 方法需要 FieldDefinition 和 values 数组,但如果我使用 lambda,那就行不通了。

是这样缩进还是我遇到了某种错误?

我正在尝试一种强类型的方法。

genres = new[] "one", "two", "three";
//This filter works
var filter = Builders<Movie>.Filter
    .ElemMatch(movie => movie.Genres, genre => genres.Contains(genre));
//This filter works
var filter2 = Builders<Movie>.Filter.In(nameof(Movie.Genres), genres);
//This filter works
var filter3 = Builders<Movie>.Filter.In("genres", genres);
//Doesn't compile
var filter4 = Builders<Movie>.Filter.In(movie => movie.Genres, genres);

【问题讨论】:

【参考方案1】:

In 过滤器检查指定字段的值是否包含在提供的数组中。如果您有一个与电影关联的Genre,则可以使用此过滤器。您会收到编译时错误,因为过滤器生成器希望此字段的类型为 string 而不是 string[]

要检查您的数组字段是否包含提供的数组中的值,请尝试以下操作:

var filter = Builders<Movie>.Filter.AnyIn(movie => movie.Genres, genres);

【讨论】:

以上是关于什么是过滤驱动的主要内容,如果未能解决你的问题,请参考以下文章

求 键盘过滤驱动程序 的讲解

文件系统过滤器驱动程序和文件系统微过滤器驱动程序有啥区别? (视窗)

如何构造一个简单的USB过滤驱动程序

linux怎样加载文件过滤驱动

Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯

过滤器的作用是啥?