阅读:1364回复:7
老鼠,可否再帮我看看?用户被禁言,该主题自动屏蔽! |
|
沙发#
发布于:2002-04-21 00:36
不会啊!我以前用也没有注意这个成员啊!
不知道你现在还有什么问题了! |
|
板凳#
发布于:2002-04-21 00:44
我估计就是你的填充缓冲区部分有问题!
因为如果不是IO_DIRECT方式的话,那么数据缓冲区在 UserBuffer指针指向的地址里面了!而你却把数据添错了 不知道你是不是在完成例程里面进行处理的呢? 当在这里处理的话就要注意IRQL是否是PASSIVE了! 一般上调用完成例程的时候数据不一定就读出来了!有可能下层驱动给你返回的这个IRP是还在排队的! |
|
地板#
发布于:2002-04-21 00:54
ByteOffset的这个值指的是要读写的文件偏移,就象这样吧!
LENGTH=10; BUFFERN[10]={‘A’}; ByteOffset=5; A文件内容是 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ 指的是把缓冲区BUFFERN写到文件A,里面,并且是从文件内容的6开始写,写十个字符,结果这样的处理之后变成了 12345AAAAAAAAAAFGHIJKLMNOPQRSTUVWXYZ |
|
地下室#
发布于:2002-04-21 01:14
pBuffer= Irp->UserBuffer;
pBuffer += offset.LowPart; Length = currentIrpStack->Parameters.Read.Length; if(pBuffer) { for(i=0;i<Length;i++) { *(pBuffer+i) = *(pBuffer+i)+2; } } 你的这部分代码意思是从Irp->UserBuffer开始偏移offset.LowPart之后的字符全部加2吧!修改的长度为Length吧! 那么这个是错误的 因为Irp->UserBuffer总共的大小才是Length |
|
5楼#
发布于:2002-04-21 16:41
用户被禁言,该主题自动屏蔽! |
|
6楼#
发布于:2002-04-21 21:13
我不知道你是怎么做的!要拷贝文件吗?
|
|
7楼#
发布于:2002-04-21 21:14
其实也不要灰心!开始的时候就是这样,多看看帮助,多看例子,有时候还要看DDK里面的一些结构定义!说不定里面有没公开的东西呢
|
|