taijun
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1982回复:4

以前Songzh兄发的帖子《修改PtReceive和PtTransferDataComplete,实现过滤ICMP的代码》的代码中有些不明白得请大家给解释一下,谢谢先

楼主#
更多 发布于:2003-10-24 10:42

帖子代码里函数PtTransferDataComplete实现中有:
。。。。。。。。。。。。。

NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress;//有什莫作用?

NDIS_STATUS status = NDIS_STATUS_SUCCESS;

HighestAcceptableAddress.LowPart = -1; //不明白啊?
HighestAcceptableAddress.HighPart = -1;

DbgPrint(\"==>PtTransferDataComplete(...)\\n\");

Resvd = (PRSVD)(Packet->MiniportReserved);//不明白意思?
OffsetPacket = (PNDIS_PACKET)Resvd->OriginalPkt;

。。。。。。。。。。。。。
 
NdisUnchainBufferAtFront(OffsetPacket, &OffsetBuffer);
NdisQueryBufferSafe(OffsetBuffer, &pBakContent1, &bufLength1, 32);//NdisQueryBuffer在ddk中的解释我看了,可还是不明白函数到底从buffer descriptor得到什莫了,并且有什莫作用?

。。。。。。。。。。。。。

if((((char*)pPacketContent)[12] == 8) && (((char*)pPacketContent)[13] == 0) && (((char*)pPacketContent)[23] == 1))//是什莫的原理能够判断出是icmp包?
 
。。。。。。。。。。。。。
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-19 21:56
搞错了,后来行了
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-26 11:24
NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress;//有什莫作用?
------------------
到DDK看NdisAllocateMemory的说明。要用到。


Resvd = (PRSVD)(Packet->MiniportReserved);//不明白意思?
OffsetPacket = (PNDIS_PACKET)Resvd->OriginalPkt;
--------------------------
MiniportReserved和ProtocolReserved都是reserved,就是说给你自己用的。在这里,来保存原来的packet。


NdisQueryBufferSafe(OffsetBuffer, &pBakContent1, &bufLength1, 32);//NdisQueryBuffer在ddk中的解释我看了,可还是不明白函数到底从buffer descriptor得到什莫了,并且有什莫作用?
-----------------------
NDIS_BUFFER,你就当是memory pointer,通过NdisQueryBufferSafe得到memory的地址和长度。


))//是什莫的原理能够判断出是icmp包?
--------------------
TCP/IP详解第一卷,第一章


我在用PtReceivePacket接收到的包在mac地址前有一大段东西
其长度不固定,请问这是什么原因,我怎么能判断mac地址字段从哪里开始的?谢谢

[编辑 -  10/26/03 by  birdtomaster]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-10-24 22:11
NDIS_BUFFER就是MDL

千万不要问我什么是MDL
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-10-24 21:14
NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress;//有什莫作用?
------------------
到DDK看NdisAllocateMemory的说明。要用到。


Resvd = (PRSVD)(Packet->MiniportReserved);//不明白意思?
OffsetPacket = (PNDIS_PACKET)Resvd->OriginalPkt;
--------------------------
MiniportReserved和ProtocolReserved都是reserved,就是说给你自己用的。在这里,来保存原来的packet。


NdisQueryBufferSafe(OffsetBuffer, &pBakContent1, &bufLength1, 32);//NdisQueryBuffer在ddk中的解释我看了,可还是不明白函数到底从buffer descriptor得到什莫了,并且有什莫作用?
-----------------------
NDIS_BUFFER,你就当是memory pointer,通过NdisQueryBufferSafe得到memory的地址和长度。


))//是什莫的原理能够判断出是icmp包?
--------------------
TCP/IP详解第一卷,第一章
游客

返回顶部