tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
阅读:4908回复:26

为什么我打开一个文件,却收不到IRP_MJ_READ

楼主#
更多 发布于:2004-01-13 14:51
用记事本打开一个txt文件,却没有收到IRP_MJ_READ?保存文件的时候可以收到IRP_MJ_WRITE,有大虾知道怎么回事吗? :)
zmb921
驱动牛犊
驱动牛犊
  • 注册日期2005-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望146点
  • 贡献值1点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-09-05 15:29
大牛们出来帮忙啊,搞不定这个问题啊?我是在磁盘驱动级别做的,也是有这个问题。还有就是read的偏移量与write的不一样,老是相差很大
stpaladin
驱动牛犊
驱动牛犊
  • 注册日期2008-06-19
  • 最后登录2010-12-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望39点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-15 15:03
是不是这是个秘密啊,大牛们对这个问题都是支支唔唔的
stpaladin
驱动牛犊
驱动牛犊
  • 注册日期2008-06-19
  • 最后登录2010-12-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望39点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-07-10 12:34
总是没有结果
zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-12-24 17:51
感谢,我也遇到同样的问题,写文件有Write ,读文件不见有Read,提示我一些思路了
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-12-21 16:33
???
www.xDrv.com
qianjunhua
驱动小牛
驱动小牛
  • 注册日期2003-12-08
  • 最后登录2013-02-27
  • 粉丝11
  • 关注0
  • 积分712分
  • 威望1052点
  • 贡献值1点
  • 好评度57点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-11-05 14:09
sorry,说错了,不是收不到irp_mj_read,而是
Irp->Flags & (IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO)
总是为否



记事本是通过mapview 来读的吧,这个mapview函数对应的内刻的函数(我忘了)做的工作 也就是通过文件系统来读取数据的,但是 cache manager 对于这个函数的调用起了很大的帮助,就是它会map 整个文件到一个虚拟内存里面来,所以这个时候的 read ahead的 work thread 就会来发送IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO 的irp 读写磁盘, 显然 记事本得到的数据都是从cache里面得到的,也就是说irp里面是不含有这些flag的。当这个文件很小的时候,也就只有一次的 物理 read了,不知道对不对啊
stevphen1
驱动牛犊
驱动牛犊
  • 注册日期2007-09-29
  • 最后登录2007-11-02
  • 粉丝0
  • 关注0
  • 积分230分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-10-11 19:09
我刚刚说的不准确啊,要弄清楚工作的文件系统层次和Filter的目标
lovehhy
驱动小牛
驱动小牛
  • 注册日期2007-09-17
  • 最后登录2010-09-17
  • 粉丝0
  • 关注0
  • 积分1028分
  • 威望244点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-10-11 17:46
引用第16楼clarence于2007-10-10 09:18发表的  :
楼上说的是NTFS里小于4K直接走$MFT的常驻属性?


是的
fooegg
驱动小牛
驱动小牛
  • 注册日期2007-08-25
  • 最后登录2008-08-31
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望111点
  • 贡献值0点
  • 好评度110点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-10-11 16:44
又见stevphen
毛主席夸我水灌得好
stevphen1
驱动牛犊
驱动牛犊
  • 注册日期2007-09-29
  • 最后登录2007-11-02
  • 粉丝0
  • 关注0
  • 积分230分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-10-11 16:42
要看你具体在什么样的文件系统上工作。
clarence
驱动牛犊
驱动牛犊
  • 注册日期2006-05-08
  • 最后登录2009-09-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望97点
  • 贡献值0点
  • 好评度76点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-10-10 09:18
楼上说的是NTFS里小于4K直接走$MFT的常驻属性?
lovehhy
驱动小牛
驱动小牛
  • 注册日期2007-09-17
  • 最后登录2010-09-17
  • 粉丝0
  • 关注0
  • 积分1028分
  • 威望244点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-10-10 00:00
关键是这个文件多大,小于4096的话,就可能了
clarence
驱动牛犊
驱动牛犊
  • 注册日期2006-05-08
  • 最后登录2009-09-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望97点
  • 贡献值0点
  • 好评度76点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-10-09 15:28
引用第13楼icesword于2007-10-09 14:49发表的  :
打开文件还有一个途径是读缓存,如果这个文件以前打开过了,再打开就可能不走文件驱动,
而只是从内存中读出,确定这个问题可以flush一下清空缓存,flush后应当就走文件驱动了,
另外读文件不一定走read,也可能走create


读文件走Create?这个有些理解不了,能给解释一下吗?
读写数据不都要走RW? 或FastIo或IRP,怎么会在Create中做读写?
icesword
驱动牛犊
驱动牛犊
  • 注册日期2002-06-03
  • 最后登录2009-10-10
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望52点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-10-09 14:49
打开文件还有一个途径是读缓存,如果这个文件以前打开过了,再打开就可能不走文件驱动,
而只是从内存中读出,确定这个问题可以flush一下清空缓存,flush后应当就走文件驱动了,
另外读文件不一定走read,也可能走create
zhangheyang
驱动牛犊
驱动牛犊
  • 注册日期2007-05-19
  • 最后登录2014-04-17
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-08-24 22:13
不仅仅是记事本,关键是哪个Cache。他从Cache读,WORD也一样。
isware
驱动牛犊
驱动牛犊
  • 注册日期2006-01-24
  • 最后登录2013-04-15
  • 粉丝0
  • 关注0
  • 积分385分
  • 威望79点
  • 贡献值0点
  • 好评度38点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-08-23 16:08
是啊
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
17楼#
发布于:2007-08-23 15:12
记事本比较神奇的,
打开一下记事本一次,会把以前打开过的
txt文件都读一下.
zhangheyang
驱动牛犊
驱动牛犊
  • 注册日期2007-05-19
  • 最后登录2014-04-17
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-08-23 14:51
还是没人回答
zhangheyang
驱动牛犊
驱动牛犊
  • 注册日期2007-05-19
  • 最后登录2014-04-17
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-08-22 10:53
没人回答。。。
上一页
游客

返回顶部