yxj727
驱动牛犊
驱动牛犊
  • 注册日期2001-06-15
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1788回复:1

谁能详细解释一下

楼主#
更多 发布于:2001-06-01 07:47
谁能详细解释一下:
NTSTATUS Wdm1Read(IN PDEVICE_OBJECT fdo,IN PIRP Irp)

LONG BytesTxd = 0;
1、LONGLONG FilePointer = IrpStack- >Parameters.Read.ByteOffset.QuadPart                     ;
ULONG ReadLen = IrpStack->Parameters.Read.Length;
if( FilePointer<0)
status = STATUS_INVALID_PARAMETER;
2、if( FilePointer>=(LONGLONG)BufferSize)
status = STATUS_END_OF_FILE;
if( ((ULONG)FilePointer)+ReadLen>BufferSize)
{
3、BytesTxd = BufferSize - (ULONG)FilePointer;
if( BytesTxd<0) BytesTxd = 0;
}
else
BytesTxd = ReadLen;
         if( BytesTxd>0 && Buffer!=NULL)
4、RtlCopyMemory( Irp->AssociatedIrp.SystemBuffer,Buffer+FilePointer, BytesTxd);

1、此处的FilePointer 是指向哪里?
2、此处的比较怎么有什么意义?指针怎能与数值比较?
3、此处的(ULONG)FilePointer前面的转换有什么意义?此处的“-”作何解释
4、此函数是从用户缓冲区读还是向用户缓冲区写,看这条语句
应该是向用户缓冲区写,可是Buffer+FilePointer是什么呢?
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-30 16:06
这不是指针,是个偏移值,就是在文件中从第几个字节开始读的意思。

这是向系统缓冲区写,你肯定是工作于DO_BUFFERED_IO方式。那么少后,IO MANAGER会把这个数据考到用户提供的缓冲区区。
“萎软”,是Microsoft的小名!
游客

返回顶部