piodma
驱动牛犊
驱动牛犊
  • 注册日期2008-05-30
  • 最后登录2008-08-14
  • 粉丝1
  • 关注1
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:2961回复: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。
请问我该怎么解决这个问题?
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分
地下室#
发布于:2008-06-01 10:41
现在知道notepad是用MMFs的了
浪费大家时间了,不好意思
piodma
驱动牛犊
驱动牛犊
  • 注册日期2008-05-30
  • 最后登录2008-08-14
  • 粉丝1
  • 关注1
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-06-05 00:41
MMF 以后,不是用指针直接指内存的吗?所以应该就不用调 readfile 了吧?

多谢楼上指点,谢谢~
游客

返回顶部