阅读:1788回复:1
谁能详细解释一下
谁能详细解释一下:
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是什么呢? |
|
沙发#
发布于:2001-06-30 16:06
这不是指针,是个偏移值,就是在文件中从第几个字节开始读的意思。
这是向系统缓冲区写,你肯定是工作于DO_BUFFERED_IO方式。那么少后,IO MANAGER会把这个数据考到用户提供的缓冲区区。 |
|
|