01 2011 档案

摘要:过滤管理器支持内核模式和用户模式的通信通过通信端口 。微过滤驱动控制端口的安全通过指定一个安全描述,它用作申请通信端口对象 。通信通过通信端口而不是缓存 ,所以它更快更有效 。用户模式应用程序或服务能回复消息给微过滤驱动作为双向通信 。当微过滤驱动创建一个通信服务端口 ,它隐式的开始监听这个端口的连接 。当用户模式调用者尝试连接这个端口 ,过滤管理器调用微过滤驱动的ConnectNotifyCallback 例程带一个新创建的连接的一个句柄 。当过滤管理器获得控制 ,它传递给用户模式调用者一个隔离的文件句柄用于连接,这个句柄代表用户模式调用者的终结点。用监听端口,这个句柄能能用作与 I/O完成 阅读全文
posted @ 2011-01-12 16:54 UnhandleException 阅读(1023) 评论(0) 推荐(0)
摘要:这部分描述被微过滤驱动执行过滤管理器支持的基本任务 。这部分包括:加载和卸载处理I/O操作更改参数访问用户缓存管理文件名字管理上下文通过微过滤驱动形成I/O请求用户模式和内核模式的通信用户模式常用的API 阅读全文
posted @ 2011-01-12 14:13 UnhandleException 阅读(354) 评论(0) 推荐(0)
摘要:过滤管理器模型和传统过滤驱动模型相比有下列优势:更好的控制过滤加载顺序 不像传统的过滤驱动 ,微过滤驱动能被加载在任何时候并且附属在正确的位置 ,这由它的高度决定(altitude)。能够在系统运行时卸载 不像传统的过滤驱动 ,不能够在系统运行时卸载 。微过滤驱动能在任何时候卸载 ,并且它能防止被卸载在必要的时候 。过滤管理器同步安全的移除所有附属它的微过滤驱动 ,并且它控制操作完成在微过滤驱动被卸载以后 。能仅处理必要的操作 过滤管理器用回调模型,这样微过滤驱动能选择正确的I/O操作(IRP-based, fast I/O, or FSFilter)去过滤 。微过滤驱动接收已近注册回调例程的 阅读全文
posted @ 2011-01-11 14:46 UnhandleException 阅读(295) 评论(0) 推荐(0)
摘要:过滤管理器被 windows 安装 ,但是仅当微过滤驱动被加载时才生效 。对于一个目标卷 ,过滤管理器依附文件系统栈 。微过滤驱动直接依附文件系统栈 ,通过注册微过滤驱动要过滤的I/O操作的过滤管理器传统过滤驱动的在文件系统 I/O 栈的位置和其它过滤驱动的位置是由加载顺序组(load order group)决定的 。例如 ,病毒过滤驱动在栈中应该高于复制过滤驱动 ,因此它能探测病毒并且为文件消毒 ,在复杂到远程服务之前 。因此 ,病毒过滤驱动比复杂过滤驱动先加载 。每一个价值顺序组有一个对于系统定义的类和类的GUID ,INF 文件将用指定过滤驱动的类GUID 。像传统的过滤驱动 ,微过滤 阅读全文
posted @ 2011-01-11 11:45 UnhandleException 阅读(961) 评论(0) 推荐(0)
摘要:过滤管理器是内核模式驱动,它符合传统文件系统模型并且暴露文件系统过滤驱动的通用功能 。有了这些功能的优势 ,第三方开发者能写微过滤驱动 ,它比传统的文件系统过滤驱动更容易开发 ,因此 ,缩短了开发进程 ,并且产生高效 、健壮的驱动 。这个部分包括:过滤管理器思想过滤管理器模型过滤管理器对微过滤驱动的支持控制过滤管理器操作开发和测试工具传统过滤驱动移植向导 阅读全文
posted @ 2011-01-11 10:44 UnhandleException 阅读(424) 评论(0) 推荐(0)
摘要:微过滤驱动的FilterUnloadCallback 例程正常的返回STATUS_SUCCESS。为了拒绝一个非托管的卸载操作,微过滤驱动因该返回一个正确的警告或错误状态 例如STATUS_FLT_DO_NOT_DETACH 。如果FilterUnloadCallback 例程返回一个警告或错误状态值,并且卸载操作不是非托管的 ,微过滤驱动将不被卸载 。 阅读全文
posted @ 2011-01-10 16:08 UnhandleException 阅读(258) 评论(0) 推荐(0)
摘要:微过滤驱动的FilterUnloadCallback 例程必须执行任何需要的全局变量的清除 。下列列表包括全局清除任务的例子,微过滤驱动可能执行 :调用ExDeleteResourceLite 删除全局资源变量,它被实例化通过调用之前的 ExInitializeResourceLite. 调用ExFreePool 或ExFreePoolWithTag 去释放全局内存,它被分配通过调用例程如ExAllocatePoolWithTag. 调用ExDeleteNPagedLookasideList 或ExDeletePagedLookasideList 去删除后备列表,它被分配通过分别调用之前的Ex 阅读全文
posted @ 2011-01-10 16:04 UnhandleException 阅读(321) 评论(0) 推荐(0)
摘要:微过滤驱动的FilterUnloadCallback 例程必须调用FltUnregisterFilter 为了取消注册微过滤驱动 。调用FltUnregisterFilter 引起下列事情发生:微过滤驱动回调例程取消注册微过滤驱动实例被卸载 ,为了每个微过滤驱动实例,微过滤驱动的InstanceTeardownStartCallback和 InstanceTeardownCompleteCallback 例程被调用如果微过滤驱动设置任何上下文 在volumes, instances, streams, or stream handles上,这些上下文被删除。如果微过滤驱动已经注册一个Clean 阅读全文
posted @ 2011-01-10 15:54 UnhandleException 阅读(432) 评论(0) 推荐(0)
摘要:如果微过滤驱动以前打开过一个内核模式的通信服务端口通过调用FltCreateCommunicationPort,它必须关闭端口通过调用FltCloseCommunicationPort 。为了阻止系统挂起在卸载进程时,微过滤驱动的FilterUnloadCallback 例程必须关闭端口在调用FltUnregisterFilter之前。如果用户模式应用程序有一个开启的连接,连向通信服务端口,对于这个连接任何客户端端口仍然开启的 在FltCloseCommunicationPort 返回以后。然而,过滤管理器将关闭所有客户端口当微过滤驱动被卸载。 阅读全文
posted @ 2011-01-10 15:30 UnhandleException 阅读(363) 评论(0) 推荐(0)
摘要:FilterUnloadCallback 例程被定义成:typedefNTSTATUS(*PFLT_FILTER_UNLOAD_CALLBACK)(FLT_FILTER_UNLOAD_FLAGSFlags);FilterUnloadCallback 例程有一个输入参数,Flags,它可以是NULL或FLTFL_FILTER_UNLOAD_MANDATORY,FLTFL_FILTER_UNLOAD_MANDATORY指明卸载操作是托管的。一个微过滤驱动的 FilterUnloadCallback 例程必须执行以下步骤:1.关门所有内核模式通信服务端口句柄(kernel-mode communic 阅读全文
posted @ 2011-01-10 14:46 UnhandleException 阅读(344) 评论(0) 推荐(0)
摘要:过滤管理器调用一个微过滤驱动的FilterUnloadCallback 例程在卸载微过滤驱动之前通过以下俩个方式之一:非托管的卸载这个类型的卸载发生当一个用户模式的应用程序已经调用FilterUnload或内核模式驱动调用FltUnloadFilter 。它也发生在你在命令行里输入fltmc unload的时候。托管卸载这个类型的卸载发生你在命令行里输入sc stop或 net stop的时候。它也发生在用户模式的应用程序调用Microsoft Win32 ControlService 方法时,传递SERVICE_CONTROL_STOP 作为dwControl 的参数。对于非托管的卸载,如果 阅读全文
posted @ 2011-01-10 14:31 UnhandleException 阅读(436) 评论(0) 推荐(0)
摘要:一个文件系统微过滤驱动能可选择的注册一个 PFLT_FILTER_UNLOAD_CALLBACK类型的例程 作为微过滤驱动的 FilterUnloadCallback 例程。这个回调例程也被称为微过滤驱动的卸载例程 。微过滤驱动不需要去注册一个 FilterUnloadCallback 例程。然而 ,我们强烈建议:微过滤驱动注册它的回调例程,因为如果微过滤驱动不注册一个 FilterUnloadCallback 例程,驱动不能被卸载。为了注册这个回调例程,微过滤驱动存储PFLT_FILTER_UNLOAD_CALLBACK类型的例程的地址 ,这个地址在 FLT_REGISTRATION 结构体 阅读全文
posted @ 2011-01-10 14:05 UnhandleException 阅读(534) 评论(0) 推荐(0)