piodma
驱动牛犊
驱动牛犊
  • 注册日期2008-05-30
  • 最后登录2008-08-14
  • 粉丝1
  • 关注1
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:2951回复:13

我为IRP_MJ_READ交换Buffer不成功,请大家帮忙

楼主#
更多 发布于:2008-05-30 16:12
在minifilter中:
我想为IRP_MJ_READ交换buffer。
我看了swapbuffer的sample code,我用里面的post-op read的方法在我的post-op read里得到 IRP_MJ_READ的 origbuf 地址,然后把我的 newbuf 的内容 RtlCopyMemory 到 origbuf 中去,但是当我打开txt file时并没有看到我的信息被替换进去。
我的思路和swapbuffer 例子的思路不同:我并没有在pre-op read中做任何处理,我没有用我的
newbuf地址去替代origbuf的地址,我只是在post-op read里,当origbuf已经填充了数据之后,用我的newbuf的东西替换进去,这时我也并没有改变origbuf的地址。
此外,我也设置了Data->iostatus->information的值为我的newbuf的大小,并且也
setcallbackdataDirty。
请问我该怎么解决这个问题?
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
沙发#
发布于:2008-05-30 16:33
不需要替换什么,你直接更改originBuffer的内容,但是不要改originBuffer的地址,也不用setDirty,反正我是这样搞的
piodma
驱动牛犊
驱动牛犊
  • 注册日期2008-05-30
  • 最后登录2008-08-14
  • 粉丝1
  • 关注1
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-05-30 16:53
我确实直接用rtlcopymemory改变origbuf的内容,可它就是没法显示出来(PS:我针对的是txt 文件)。
piodma
驱动牛犊
驱动牛犊
  • 注册日期2008-05-30
  • 最后登录2008-08-14
  • 粉丝1
  • 关注1
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-05-30 19:51
当打开 txt 文件的时候,为什么 minispy 没有监测到 IRP_MJ_READ ?但是从我当前这个代码的调试来看,确实有发出 IRP_MJ_READ 的啊。
piodma
驱动牛犊
驱动牛犊
  • 注册日期2008-05-30
  • 最后登录2008-08-14
  • 粉丝1
  • 关注1
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-05-31 12:00
怎么改变IRP_MJ_READ的buffer的内容
怎么改变 IRP_MJ_READ 的 buffer 的内容,使得在用 notepad 打开的时候能显示出更改过的内容?

谁能给几行关键代码?我怎么弄都弄不出来。
piodma
驱动牛犊
驱动牛犊
  • 注册日期2008-05-30
  • 最后登录2008-08-14
  • 粉丝1
  • 关注1
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-06-01 10:41
现在知道notepad是用MMFs的了
浪费大家时间了,不好意思
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
6楼#
发布于:2008-06-02 08:25
memory map就不读了??我想你的这个问题答案并不是说因为它是mmp吧。。。可能是系统已经将你的文件预读了,所以它没有真正的读的irp。
goodone
驱动牛犊
驱动牛犊
  • 注册日期2007-01-30
  • 最后登录2014-04-30
  • 粉丝3
  • 关注0
  • 积分372分
  • 威望174点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-06-02 18:03
引用第6楼microbe于2008-06-02 08:25发表的  :
memory map就不读了??我想你的这个问题答案并不是说因为它是mmp吧。。。可能是系统已经将你的文件预读了,所以它没有真正的读的irp。


是啊 用Map了就不读了吗?还有缓存问题?
怎么解决这种map方式的读和写,还有缓存改怎么处理?
大侠们给个清晰的解释吧 谢谢啦!
栀子花驿站 www.zhizihua.com
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
8楼#
发布于:2008-06-03 08:28
如果你想它有一个noncache的read的irp,你可以在这个txt第一次create的时候清缓存,这样随后会有一个noncache的read的irp,不要错过咯!
piodma
驱动牛犊
驱动牛犊
  • 注册日期2008-05-30
  • 最后登录2008-08-14
  • 粉丝1
  • 关注1
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-06-05 00:41
MMF 以后,不是用指针直接指内存的吗?所以应该就不用调 readfile 了吧?

多谢楼上指点,谢谢~
goodone
驱动牛犊
驱动牛犊
  • 注册日期2007-01-30
  • 最后登录2014-04-30
  • 粉丝3
  • 关注0
  • 积分372分
  • 威望174点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-06-06 16:13
Map 这种方式 与 普通的read 方式 除了在上层上有使用不同外,
对下层的文件 irp read 、write也会有影响吗?
哪位 可以给小弟解释下,谢谢了!
栀子花驿站 www.zhizihua.com
j965829
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望29点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-06-10 11:09
用MMFs 是如何搞定的?
stpaladin
驱动牛犊
驱动牛犊
  • 注册日期2008-06-19
  • 最后登录2010-12-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望39点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2008-07-08 16:39
楼主怎么搞定的,我也在为你的问题发愁呢,可以发点代码吗?谢谢
stpaladin
驱动牛犊
驱动牛犊
  • 注册日期2008-06-19
  • 最后登录2010-12-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望39点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2008-07-15 15:06
有时间就顶吧,直到解决
游客

返回顶部