释放上下文

微筛选器通过调用 FltReleaseContext 释放上下文。 每次成功调用以下例程之一,最终都必须通过对 FltReleaseContext 的调用进行匹配:

请注意,当不再需要时,还必须释放 FltSetXxxContext 返回的 OldContext 指针和 FltDeleteContext 返回的 Context 指针。

在下面的代码示例(取自 CTX 示例微筛选器)中, CtxInstanceSetup 例程创建并设置实例上下文,然后调用 FltReleaseContext

status = FltAllocateContext(
           FltObjects->Filter,           //Filter
           FLT_INSTANCE_CONTEXT,         //ContextType
           CTX_INSTANCE_CONTEXT_SIZE,    //ContextSize
           NonPagedPool,                 //PoolType
           &instanceContext);            //ReturnedContext
...
status = FltSetInstanceContext(
           FltObjects->Instance,              //Instance
           FLT_SET_CONTEXT_KEEP_IF_EXISTS,    //Operation
           instanceContext,                   //NewContext
           NULL);                             //OldContext

if (instanceContext != NULL) {
  FltReleaseContext(instanceContext);
}
return status;

请注意,无论对 FltSetInstanceContext 的调用是否成功,都会调用 FltReleaseContext