摘要:
微过滤驱动的FilterUnloadCallback 例程必须执行任何需要的全局变量的清除 。下列列表包括全局清除任务的例子,微过滤驱动可能执行 :调用ExDeleteResourceLite 删除全局资源变量,它被实例化通过调用之前的 ExInitializeResourceLite. 调用ExFreePool 或ExFreePoolWithTag 去释放全局内存,它被分配通过调用例程如ExAllocatePoolWithTag. 调用ExDeleteNPagedLookasideList 或ExDeletePagedLookasideList 去删除后备列表,它被分配通过分别调用之前的Ex 阅读全文
摘要:
微过滤驱动的FilterUnloadCallback 例程必须调用FltUnregisterFilter 为了取消注册微过滤驱动 。调用FltUnregisterFilter 引起下列事情发生:微过滤驱动回调例程取消注册微过滤驱动实例被卸载 ,为了每个微过滤驱动实例,微过滤驱动的InstanceTeardownStartCallback和 InstanceTeardownCompleteCallback 例程被调用如果微过滤驱动设置任何上下文 在volumes, instances, streams, or stream handles上,这些上下文被删除。如果微过滤驱动已经注册一个Clean 阅读全文
摘要:
如果微过滤驱动以前打开过一个内核模式的通信服务端口通过调用FltCreateCommunicationPort,它必须关闭端口通过调用FltCloseCommunicationPort 。为了阻止系统挂起在卸载进程时,微过滤驱动的FilterUnloadCallback 例程必须关闭端口在调用FltUnregisterFilter之前。如果用户模式应用程序有一个开启的连接,连向通信服务端口,对于这个连接任何客户端端口仍然开启的 在FltCloseCommunicationPort 返回以后。然而,过滤管理器将关闭所有客户端口当微过滤驱动被卸载。 阅读全文
摘要:
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 阅读全文
摘要:
过滤管理器调用一个微过滤驱动的FilterUnloadCallback 例程在卸载微过滤驱动之前通过以下俩个方式之一:非托管的卸载这个类型的卸载发生当一个用户模式的应用程序已经调用FilterUnload或内核模式驱动调用FltUnloadFilter 。它也发生在你在命令行里输入fltmc unload的时候。托管卸载这个类型的卸载发生你在命令行里输入sc stop或 net stop的时候。它也发生在用户模式的应用程序调用Microsoft Win32 ControlService 方法时,传递SERVICE_CONTROL_STOP 作为dwControl 的参数。对于非托管的卸载,如果 阅读全文
摘要:
一个文件系统微过滤驱动能可选择的注册一个 PFLT_FILTER_UNLOAD_CALLBACK类型的例程 作为微过滤驱动的 FilterUnloadCallback 例程。这个回调例程也被称为微过滤驱动的卸载例程 。微过滤驱动不需要去注册一个 FilterUnloadCallback 例程。然而 ,我们强烈建议:微过滤驱动注册它的回调例程,因为如果微过滤驱动不注册一个 FilterUnloadCallback 例程,驱动不能被卸载。为了注册这个回调例程,微过滤驱动存储PFLT_FILTER_UNLOAD_CALLBACK类型的例程的地址 ,这个地址在 FLT_REGISTRATION 结构体 阅读全文