Api FltGetStreamHandleContext和FltSetStreamHandleContext函数

Api FltGetStreamHandleContext和FltSetStreamHandleContext函数,api,filter,driver,Api,Filter,Driver,FltGetStreamHandleContext的第三个参数的结构是否为用户定义的结构?在通过FltGetStreamHandleContext获取上下文之前,是否必须通过FltSetStreamHandleContext函数预定义上下文?很抱歉给您带来不便。是的,PFLT\u上下文是用户定义的结构,因此您可以自己设计它的内容。你需要通过电话分配。实际上,这个函数为分配的上下文上的保持引用计数分配了比ContextSize参数更多的参数(最初它等于1),因为fltstream[Handle]c

FltGetStreamHandleContext的第三个参数的结构是否为用户定义的结构?在通过FltGetStreamHandleContext获取上下文之前,是否必须通过FltSetStreamHandleContext函数预定义上下文?很抱歉给您带来不便。

是的,
PFLT\u上下文是用户定义的结构,因此您可以自己设计它的内容。你需要通过电话分配。实际上,这个函数为分配的上下文上的保持引用计数分配了比ContextSize参数更多的参数(最初它等于1),因为
fltstream[Handle]context
shell over or(阅读更多)

如果在
FltGetStream[Handle]Context
之前未调用
fltstream[Handle]Context
,则会得到
NULL\u Context
(或者简单地说是0)(更确切地说
FltGetStream[Handle]Context
返回错误
未找到状态

同样,上下文是您在迷你过滤器驱动程序中定义的结构(在旧版中,您需要从中继承上下文,但迷你文件trs封装了它)

通常我们使用下一个代码

MY_STREAM_CONTEXT* Ctx;// your custom data
if (0 <= FltGetStreamHandleContext(FltObjects->Instance, FltObjects->FileObject, (PFLT_CONTEXT*)&Ctx))
{
  //.. use Ctx
  FltReleaseContext(Ctx);
}
MY\u STREAM\u CONTEXT*Ctx;//您的自定义数据
if(0实例,FltObjects->FileObject,(PFLT_CONTEXT*)&Ctx))
{
//…使用Ctx
FltReleaseContext(Ctx);
}