什么是过滤驱动
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);
【讨论】:
以上是关于什么是过滤驱动的主要内容,如果未能解决你的问题,请参考以下文章
文件系统过滤器驱动程序和文件系统微过滤器驱动程序有啥区别? (视窗)