dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
阅读:1289回复:4

写入文件尾时,返回写入长度是由什么决定的

楼主#
更多 发布于:2008-05-13 18:29
比如要写入0x20552字节数据,用filespy查看,发现共有三条请求
towrite 10000 write 10000
towrite 10000 write 10000
towrite 10000 write 552
问题出在最后一条请求,在此请求的prewrite历程中,发现文件写入长度是0x10000,而在postwrite历程中,返回的status.information只有0x552。在write之前,filespy显示系统并无任何query和setinformation信息,请问下层驱动如何知道文件尾写入数据长度只有552而不是10000?
x-star
驱动小牛
驱动小牛
  • 注册日期2007-04-26
  • 最后登录2018-11-17
  • 粉丝0
  • 关注0
  • 积分65分
  • 威望664点
  • 贡献值1点
  • 好评度39点
  • 原创分1分
  • 专家分1分
  • 社区居民
沙发#
发布于:2008-11-28 16:48
引用第1楼dionysus77于2008-05-16 10:12发表的  :
问题已解决。原来缓冲方式写入数据超过文件长度时,EOF更新不通过SetInformation例程。而paging IO的写操作不会更新EOF,必须自己SetInformation设置,否则超过文件原长度的数据将无法写入。

EOF 更新不通过Setinformation   那通过什么?
jununfly
驱动牛犊
驱动牛犊
  • 注册日期2008-10-17
  • 最后登录2010-06-01
  • 粉丝0
  • 关注0
  • 积分86分
  • 威望560点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-11-20 17:44
感谢分享
hyjtlyra2009
驱动牛犊
驱动牛犊
  • 注册日期2008-09-10
  • 最后登录2010-07-22
  • 粉丝6
  • 关注0
  • 积分2分
  • 威望323点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分10分
地板#
发布于:2008-11-18 13:02
路过……学习……
洗鉴宏宇 兼济豢龙
dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-05-16 10:12
问题已解决。原来缓冲方式写入数据超过文件长度时,EOF更新不通过SetInformation例程。而paging IO的写操作不会更新EOF,必须自己SetInformation设置,否则超过文件原长度的数据将无法写入。
游客

返回顶部