Unregistering the Minifilter 取消注册微过滤

微过滤驱动的FilterUnloadCallback 例程必须调用FltUnregisterFilter 为了取消注册微过滤驱动 。调用FltUnregisterFilter 引起下列事情发生:

微过滤驱动回调例程取消注册

微过滤驱动实例被卸载 ,为了每个微过滤驱动实例,微过滤驱动的InstanceTeardownStartCallback 和 InstanceTeardownCompleteCallback 例程被调用

如果微过滤驱动设置任何上下文 在volumes, instances, streams, or stream handles上,这些上下文被删除。如果微过滤驱动已经注册一个CleanupContext 回调例程对于一个给定的上下文类型,过滤管理器调用CleanupContext 例程在删除上下文之前 。

 

如果微过滤驱动的不透明的过滤指针有未处理的程序引用(rundown references ),FltUnregisterFilter 进入一个等待状态,直到它们被移除 。未处理的程序引用通常发生因为微过滤驱动已经调用了FltQueueGenericWorkItem插入一个工作项进入系统工作队列,并且工作项没有被从队列里移除。

对于微过滤驱动的不透明过滤指针,未处理程序引用也能发生如果微过滤驱动已经调用了任何添加程序引用的例程,eg:调用了FltObjectReferenceFltGetFilterFromInstance, 但是没有在后来调用FltObjectDereference

 

posted @ 2011-01-10 15:54  UnhandleException  阅读(417)  评论(0编辑  收藏  举报