阅读:2177回复:5
关于StreamContext,设置值后,拿不到数据。
PostCreate中,我创建StreamContext,(FltAllocateContext、FltSetStreamContext)
在PreRead或PreWrite,FltGetStreamContext拿不到数据,为什么呢? 我分别在PostCreate和PreRead入口打印FltObjects->Instance和FltObjects->FileObject,值各不相同。为什么呢? |
|
沙发#
发布于:2008-11-02 14:18
还发现,如果关注的文件长度为0,文件类型为txt和bat。
能正常拿到数据,即PostCreate和PreRead入口打印FltObjects->Instance和FltObjects->FileObject值一样。 如果文件有内容,是不是被缓存了? 补充一句:使用下面代码来关注文件类别。 status = FltGetFileNameInformation( Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP, &nameInfo ); |
|
板凳#
发布于:2008-11-03 01:00
FltSetStreamContext是怎么调用的?参数是什么?是Replace还是Keep?
|
|
地板#
发布于:2008-11-03 11:08
\FltSetStreamContext( FltObjects->Instance,FltObjects->FileObject,FLT_SET_CONTEXT_REPLACE_IF_EXISTS,fileContextPtr,NULL);
我试过了,用FLT_SET_CONTEXT_KEEP_IF_EXISTS也不行。 另外获取文件名: status = FltGetFileNameInformation( Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_DEFAULT, &nameInfo ); 改过FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP,也不行 |
|
地下室#
发布于:2008-11-05 15:42
用Data->Iopb->targetInstance
Data->Iopb->targetFileobjet 试一下 |
|
|
5楼#
发布于:2009-01-19 18:31
StreamContext
是跟文件对象的,你调试下,你设置上下文的文件对象,和你想取得上下文地方的文件对象是否是同一个 |
|