本人最进从事过滤驱动的开发,希望在读写例程当中修改文件的偏移量和长度,从而达到自主控制文件内容的目的。下面是我的读例程和完成例程的部分代码,请各位大侠看看为什么会出问题:读例程: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)

返回顶部