首页
社区
课程
招聘
[求助]minifilter驱动:post_create(当前为A进程)中设置的stream handle context在pre_write(当前为B进程)中获取到了
发表于: 2016-9-22 09:44 4177

[求助]minifilter驱动:post_create(当前为A进程)中设置的stream handle context在pre_write(当前为B进程)中获取到了

2016-9-22 09:44
4177
场景:
目录mydir下有若干文件:a,b,c...;
进程A循环读取mydir下的文件;
进程B持续更新mydir下的文件;

minifilter驱动若发现A在读取mydir下的文件,在post_create中执行FltSetStreamHandleContext,对当前文件对象设置stream handle context;

问题:
偶尔会发现,在pre_write中获取到了stream handle context,
此时进程id为4,IrpFlags = 0x60043,应该是缓存管理器发起的一个paging I/O,
通过日志发现,此时取到的stream handle context 竟是之前A在读取mydir下的文件时在post_create中设置的(地址及内容完全一样),不仅如此,两处的file object地址也相同。

哪位遇到过类似问题?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没遇到过.

你在Post_Create里面,把文件路径,以及进程ID什么的,一起保存到context里面

具体是哪个进程读写, 以context为准.
2016-9-22 11:45
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢楼上兄弟的回答!
已经在Post_Create中将进程ID保存了,pre_write中偶然获取到context后,其中的进程ID是A进程的,但A进程仅是读取文件,并没有写操作。

有资料说,file object 和 context 在文件句柄关闭后,还会在系统中保持一段时间,不知有何用意,是否和这个问题有点关系?
2016-9-22 18:14
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
streamhandle 类型的context, 貌似不会有这个问题吧...反正没遇到过
2016-9-24 03:45
0
游客
登录 | 注册 方可回帖
返回
//