gonghuishine
驱动牛犊
驱动牛犊
  • 注册日期2004-09-18
  • 最后登录2006-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1093回复:5

FILEDISK的读操作改成改一块块的读!不能格化式了!!求命!!

楼主#
更多 发布于:2005-02-26 19:55
我把FILEDISK的读操作改成了
tlen=io_stack->Parameters.Read.Length;
tbuf= buffer;
ten =io_stack->Parameters.Read.ByteOffset;
            
do {
                ZwReadFile(
                    device_extension->file_handle,
                    NULL,
                    NULL,
                    NULL,
                    &irp->IoStatus,
                    tbuf,
                    512,
                    &ten,
                    NULL
                    );
   tlen-=512;
   tbuf+=512;
   ten.QuadPart+=512;
 }while (tlen>0);
之后不能格式化了!
如果使用已格式化的映像文件不能正常读写!!!
其它的部分没有改!!!!!

高手帮忙解决一下??/

[编辑 -  2/26/05 by  gonghuishine]

[编辑 -  2/26/05 by  gonghuishine]
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-02-28 10:03
方案没问题,不正常是因为算法有问题 每次就取512字节放到BUF中,没做偏移,不知道你想干什么
---内核开发合作或提供基础技术服务QQ:22863668 ---
gonghuishine
驱动牛犊
驱动牛犊
  • 注册日期2004-09-18
  • 最后登录2006-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-28 20:01
tlen-=512;
tbuf+=512;
ten.QuadPart+=512
这里不做了偏移了吗!
如果把设大一点!可是正常读写!但还是不能格式化
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-03-01 09:36
不知道你完整的代码是怎么写的,不能格式化就是读写处理的有问题。
---内核开发合作或提供基础技术服务QQ:22863668 ---
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-03-01 09:40
tlen-=512;
tbuf+=512;
ten.QuadPart+=512;


这么各读法有没有考虑到数据不是512倍数的情况,为何没有崩溃我想不通。
---内核开发合作或提供基础技术服务QQ:22863668 ---
gonghuishine
驱动牛犊
驱动牛犊
  • 注册日期2004-09-18
  • 最后登录2006-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-01 21:16
别的地方我没有改!!!!我就改了读的地方!

io_stack->Parameters.Read.Length;
io_stack->Parameters.Read.ByteOffset;
这里512对齐的!!肯定不会本溃!!!!

到底有没有人帮我帮决!!!!1

游客

返回顶部