云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Windows文件系统过滤管理器之微过滤器驱动开发指南

Windows文件系统过滤管理器之微过滤器驱动开发指南

  • 62 次阅读
  • 3 次下载
  • 2025/5/7 22:29:30

);

如果OldContext参数为空,那么过滤管理器会释放对这个上下文的所有的引用。否则,上下文会通过OldContext返回。微过滤器必须自己调用FltReleaseContext来释放它。

9.3 上下文获取(Retrieval)接口

下面的例程用来获取某个设备的相关上下文。使用完毕,调用者必须释放返回的上下文,释放使用FltReleaseContext().上下文不能在DPC中断级获取。所以如果一个后操作回调中希望得到一个上下文,那么必须从预操作中获得并传入。

NTSTATUS

FLTAPI

FltGetVolumeContext (

IN PFLT_FILTER Filter,

IN PFLT_VOLUME Volume,

OUT PFLT_CONTEXT *Context

);

NTSTATUS

FLTAPI

FltGetInstanceContext (

IN PFLT_INSTANCE Instance,

OUT PFLT_CONTEXT *Context

);

NTSTATUS

FLTAPI

FltGetFileContext (

IN PFLT_INSTANCE Instance,

IN PFILE_OBJECT FileObject,

OUT PFLT_CONTEXT *Context

);

NTSTATUS

FLTAPI

FltGetStreamContext (

IN PFLT_INSTANCE Instance,

IN PFILE_OBJECT FileObject,

OUT PFLT_CONTEXT *Context

);

NTSTATUS

FLTAPI

FltGetStreamHandleContext (

IN PFLT_INSTANCE Instance,

IN PFILE_OBJECT FileObject,

OUT PFLT_CONTEXT *Context );

当使用完毕,下面的一些例程用来释放获得的上下文。一般推荐不要在操作之间传递这些上下文指针。上下文的获取非常有效率,是专门设计用来在每个操作要使用的时候专门来获取上下文的。

VOID

FLTAPI

FltReleaseContext (

IN PFLT_CONTEXT Context );

类似实例通知例程,每个操作的回调例程都收到一个FLT_RELATED_OBJECTS结构。这个结构包含所有这个操作相关的所有已知的的对象。为了简化上下文的获取,有一个类似的FLT_RELATED_CONTEXT可以一次获取。这个结构如下:

typedef struct _FLT_RELATED_CONTEXTS {

PFLT_CONTEXT VolumeContext;

PFLT_CONTEXT InstanceContext;

PFLT_CONTEXT FileContext;

PFLT_CONTEXT StreamContext;

PFLT_CONTEXT StreamHandleContext;

} FLT_RELATED_CONTEXTS, *PFLT_RELATED_CONTEXTS;

接下来两个例程用来依次获得多个例程,此外也有一次性释放。对于FltGetContexts()调用者指定(在DesiredContext参数中)需要的上下文。在内部,一次获得多个上下文比一个一个的获得它们效率高。当然,对于不需要的上下文最好是不要去获取它。FLT_ALL_CONTEXTS可以用来得到所有可用的上下文。

VOID

FltGetContexts (

IN PFLT_RELATED_OBJECTS FltObjects, IN FLT_CONTEXT_TYPE DesiredContexts, OUT PFLT_RELATED_CONTEXTS Contexts );

VOID

FltReleaseContexts (

IN OUT PFLT_RELATED_CONTEXTS Contexts );

9.4 上下文释放接口

当过滤管理器决定了一个上下文要被释放的时候,微过滤器的相关回调会被调用。这个回调例程应该清理任何上下文(包括清理分配的内存,释放资源等等)。通过返回,过滤管理器会释放传入的上下文结构。

每个类型的上下文都要有一个对应的清理例程。这些例程定义如下:

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

); 如果OldContext参数为空,那么过滤管理器会释放对这个上下文的所有的引用。否则,上下文会通过OldContext返回。微过滤器必须自己调用FltReleaseContext来释放它。 9.3 上下文获取(Retrieval)接口 下面的例程用来获取某个设备的相关上下文。使用完毕,调用者必须释放返回的上下文,释放使用FltReleaseContext().上下文不能在DPC中断级获取。所以如果一个后操作回调中希望得到一个上下文,那么必须从预操作中获得并传入。 NTSTATUS FLTAPI FltGetVolumeContext ( IN PFLT_FILTER Filter, IN PFLT

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com