版块
论坛
喜欢
话题
应用
搜索
登录
注册
joshua_yu的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=95685
关于文件读写偏移以及长度的问题
本人最进从事过滤驱动的开发,希望在读写例程当中修改文件的偏移量和长度,从而达到自主控制文件内容的目的。下面是我的读例程和完成例程的部分代码,请各位大侠看看为什么会出问题:读例程:case IRP_MJ_READ:DownTransfer = ExAllocatePool(NonP...
全文
回复
(
9
)
2005-03-02 16:12
来自版块 -
内核编程
◆
◆
表情
告诉我的粉丝
提 交
bmyyyud
:
看来是不能改大
(2005-03-03 15:40)
回复
joshua_yu
:
对啊,长度是和缓冲区匹配的,所以如果想要修改读取内容的长度,不但要修改Read.Length同时要根据这个长度创建一个新的缓冲区,替换原来的缓冲区啊,这两者就是一致的,关于这个问题我已经试验过了,能够读取想要的长度。 刚才我又修改了一下程序,将返回的内容拷贝回用户缓冲区时不...
(2005-03-03 11:03)
回复
bmyyyud
:
没错啊,我就是将这个缓冲区的内容全部拷贝到自己分配的缓冲区中去的,但是从底层驱动返回以后总要将读取到的内容拷贝回用户缓冲区的,要不然用户怎么能够读取到文件内容呢?可就是在拷贝的时候出现问题的,现在我发现好像是缓冲区长度的问题,但是长度是从上面传下来的啊,我没有修改啊? 你上面...
(2005-03-03 10:07)
回复
joshua_yu
:
没错啊,我就是将这个缓冲区的内容全部拷贝到自己分配的缓冲区中去的,但是从底层驱动返回以后总要将读取到的内容拷贝回用户缓冲区的,要不然用户怎么能够读取到文件内容呢?可就是在拷贝的时候出现问题的,现在我发现好像是缓冲区长度的问题,但是长度是从上面传下来的啊,我没有修改啊?
(2005-03-03 09:28)
回复
bmyyyud
:
可是如果进行加解密或者为文件添加头等行为,不修改系统缓冲区该怎么做呢?谢谢大侠指点! 另外,为什么这个缓冲区无法写呢? [编辑 - 3/2/05 by joshua_yu] DDK上说,必须将这个缓冲区的内容全部拷贝到自己驱动分配的内存中去
(2005-03-03 09:18)
回复
joshua_yu
:
高手都哪里去了? 自己顶一个先
(2005-03-03 09:16)
回复
joshua_yu
:
可是如果进行加解密或者为文件添加头等行为,不修改系统缓冲区该怎么做呢?谢谢大侠指点! 另外,为什么这个缓冲区无法写呢? [编辑 - 3/2/05 by joshua_yu]
(2005-03-02 16:46)
回复
bmyyyud
:
系统缓冲区是在I/O manage 自己的Zone中,它自己知道如何用,你硬塞给它一个buffer,不太适合它的口味
(2005-03-02 16:35)
回复
joshua_yu
:
对了,在读例程当中向用户缓冲区copymemory也会出现页异常,难道此时的用户缓冲区是不可写的?那么低层驱动是怎么把磁盘数据写到这个缓冲区中的呢?
(2005-03-02 16:34)
回复
joshua_yu
加关注
写私信
0
关注
0
粉丝
231
帖子
返回顶部