pengyan
驱动牛犊
驱动牛犊
  • 注册日期2007-05-03
  • 最后登录2013-11-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望83点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:1450回复:1

有个问题实在搞不明白,希望znSoft 等牛人帮我看下~~~~~

楼主#
更多 发布于:2008-07-01 09:09
可能下面的理解有错误,希望牛人指出:

1,我仿照WDK下面的Ctx例子,在Create 的后调函数里面设置文件流的上下文,文件流句柄的上下文。这样至少来自应用层的文件读写会被

设置上下文。

2,在处理paging_io 的时候,一般是由VMM,Cache Manager等发起的,而他们创建的文件对象FO可以不经过文件驱动的Create 函数,所以

获得它们的文件流句柄上下文时一般为空。但如果有应用程序在paging_io 之前读写文件,一般会调用Create函数,这样应用程序的读写会

在paging_io 之前设置文件流的上下文,所以上面的FO得到的文件流上下文不为空。

3,但我在paging_io(write 操作)里面获取文件流上下文时,老是和Create 里面设置的不同(是不是有其它原因啊?)~~~~~~~~~~~~。

4,我在write(是paging_io操作)里面调用FltGetFileNameInformation(通过FltDoCompletionProcessingWhenSafe调用的,不会有IRQL太

高的问题) 一般得不到文件的名字,这可能和TopLevelIrp有关----系统为防止死锁。但我在Close的前调函数里面调用

FltGetFileNameInformation 一般也会有问题,不知道问什么(这里的文件对象和paging_io 里面的文件对象相同)。


关键为什么我在paging_io 里面得到的文件流上下文和在Create 的后调函数里面设置文件流的上下文有不同~~~~~~~~~~
pengyan
驱动牛犊
驱动牛犊
  • 注册日期2007-05-03
  • 最后登录2013-11-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望83点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-01 10:30
怎么没人啊~~~~
游客

返回顶部