Deleting Contexts 删除上下文

每个上下文调用 成功,最后都必须被删除。但是,微过滤驱动自动的删除上下文当上下文绑定的对象被删除,当微过滤驱动实例被卸载或当微过滤驱动从卷中被卸载。因此,对一个微过滤驱动来说,删除上下文不太必要。

 

微过滤驱动能删除上下文通过调用FltDeleteXxxContext,Xxx是上下文类型,也可以调用 FltDeleteContext

一个上下文能被删除,当设置为绑定一个对象时。上下文不能被删除,如果没有被设置,或者它被一个新的上下文成功取代通过调用FltSetXxxContext

在调用FltDeleteXxxContext 时,旧的上下文通过OldContent参数返回,如果它是非空的话。如果OldContent参数是空,驱动管理器减少上下文的引用数量 。

下面示例删除一个流上下文(stream context):

status = FltDeleteStreamContext(
           FltObjects->Instance,      //实例

           FltObjects->FileObject,    //文件对象
           &oldContext);              //旧的上下文
...
if (oldContext != NULL) {
    FltReleaseContext(oldContext); //如果旧的上下文不为空,最终要调用此函数
}

 

在这个例子中,FltDeleteStreamContext移除了流上下文从流中,但是它不减少上下文引用数量,因为旧的上下文参数是非空的。FltDeleteStreamContext返回要删除旧的上下文地址。调用者最后必须调用FltReleaseContext

posted @ 2010-12-29 14:29  UnhandleException  阅读(407)  评论(0编辑  收藏  举报