当前位置: 代码迷 >> 驱动开发 >> 求解parameters.write.byteoffset.quadpart的作用,该如何处理
  详细解决方案

求解parameters.write.byteoffset.quadpart的作用,该如何处理

热度:77   发布时间:2016-04-28 11:20:55.0
求解parameters.write.byteoffset.quadpart的作用
pDevExt->buffer = (PUCHAR)ExAllocatePool(PagedPool,MAX_FILE_LENGTH);
ULONG ulWriteOffset=(ULONG)stack->Parameters.Write.ByteOffset.QuadPart;
memcpy( pDevExt->buffer + ulWriteOffset , pIrp->AssociatedIrp.SystemBuffer, ulWriteLength);

求高手解答为什么将pIrp->AssociatedIrp.SystemBuffer复制到自己申请的buffer缓冲区还要在后面加个ulWriteOffset,去掉行不行

------解决方案--------------------
驱动模仿一个文件吧 驱动保存文件就用的pDevExt->buffer,buffer的长度是MAX_FILE_LENGTH(即文件最大长度)。

当写请求到达驱动的时候,需要把应用程序要写数据写到文件中(即复制到buffer中)。
ULONG ulWriteOffset=(ULONG)stack->Parameters.Write.ByteOffset.QuadPart;就是本次写操作的偏移量。比如文件长度是2000Bytes,ulWriteOffset为1000,那么意思就是从文件开始的第1000个字节开始将ulWriteLength个Bytes写到文件中。

写文件就2个参数,一个ByteOffset(即写到文件中的哪个位置),一个length(即写多少个字节的数据)

明白了吗?
  相关解决方案