rangzh
驱动小牛
驱动小牛
  • 注册日期2005-04-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望150点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
阅读:3637回复:9

网络数据包相关结构(新手,NDIS 5.1)

楼主#
更多 发布于:2007-08-23 00:38
写文档时画的一个图,网络数据包及带外数据、扩展数据结构见的关系,熟手就不用看了

1. 每一个网络数据包都采用NDIS_PACKET结构来描述。该结构主要描述有用的数据部分。而对于与该数据包相关的信息,比如数据包的接收时间,并不算真正的数据,因而称为带外数据,用NDIS_PACKET_OOB_DATA结构来描述。除带外数据外,还有一些跟特定协议有关系的扩展信息,比如tcp/ip的任务下移,则放在扩展数据中描述。扩展数据用NDIS_PACKET_EXTENSION结构来表示;

2. NDIS_PACKET结构有一个Private成员,其类型为NDIS_PACKET_PRIVATE结构体。NDIS_PACKET_PRIVATE中指明了带外数据的偏移;

3. 用数据包描述符地址加上袋外数据偏移,就得到带外数据描述地址;

4. 带外数据描述符地址加上带外数据的大小就得到扩展数据地址。也就是说,扩展数据紧接着带外数据。
feifei1982
驱动牛犊
驱动牛犊
  • 注册日期2006-11-13
  • 最后登录2008-01-09
  • 粉丝0
  • 关注0
  • 积分340分
  • 威望35点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-23 08:11
好图
numenshane
驱动牛犊
驱动牛犊
  • 注册日期2007-07-12
  • 最后登录2009-09-28
  • 粉丝0
  • 关注0
  • 积分280分
  • 威望37点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-23 10:29
不错,应该做介绍数据包的处理图解!
gsasd fs agds sadgsa asfdas df
robbielee
驱动牛犊
驱动牛犊
  • 注册日期2007-07-31
  • 最后登录2009-09-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-23 13:54
加上点注释==》》Re:网络数据包相关结构(新手,NDIS 5.1)
typedef struct _NDIS_PACKET_PRIVATE
{
    UINT                PhysicalCount;    // number of physical pages in packet.
    UINT                TotalLength;    // Total amount of data in the packet.
    PNDIS_BUFFER        Head;            // first buffer in the chain
    PNDIS_BUFFER        Tail;            // last buffer in the chain

    // if Head is NULL the chain is empty; Tail doesn't have to be NULL also

    PNDIS_PACKET_POOL    Pool;            // so we know where to free it back to
    UINT                Count;
    ULONG                Flags;            
    BOOLEAN                ValidCounts;
    UCHAR                NdisPacketFlags;    // See fPACKET_xxx bits below
    USHORT                NdisPacketOobOffset;
} NDIS_PACKET_PRIVATE, * PNDIS_PACKET_PRIVATE;
gutian98
禁止发言
禁止发言
  • 注册日期2003-01-12
  • 最后登录2016-12-11
  • 粉丝4
  • 关注2
  • 积分760分
  • 威望8026点
  • 贡献值1点
  • 好评度364点
  • 原创分0分
  • 专家分21分
  • 金点子奖
  • 社区居民
地下室#
发布于:2007-08-23 16:42
用户被禁言,该主题自动屏蔽!
jamesking
驱动牛犊
驱动牛犊
  • 注册日期2004-02-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望53点
  • 贡献值1点
  • 好评度13点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-08-24 10:34
绝对好图,不顶对不起毛主席。

不过这个图没有说明MediaSpecificInfo如何存放。
另外我还有一个疑问:是否调用NdisMSendComplete后,所有的这些资源都会被上层释放掉?
rangzh
驱动小牛
驱动小牛
  • 注册日期2005-04-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望150点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-08-24 12:22
当时还没想到MediaSpecificInfo的具体内容

按照文档说明NdisMSendComplete后,ProtocolSendComplete应该会被调用,进而会释放相关资源吧

引用第5楼jamesking于2007-08-24 10:34发表的  :
绝对好图,不顶对不起毛主席。

不过这个图没有说明MediaSpecificInfo如何存放。
另外我还有一个疑问:是否调用NdisMSendComplete后,所有的这些资源都会被上层释放掉?
robbielee
驱动牛犊
驱动牛犊
  • 注册日期2007-07-31
  • 最后登录2009-09-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-08-24 14:11
引用第2楼numenshane于2007-08-23 10:29发表的  :
不错,应该做介绍数据包的处理图解!


这个图越看越喜欢,呵呵!

顶下!

支持数据包处理图解!!!hoho!!盼望图解出炉!!!
temptemp
驱动牛犊
驱动牛犊
  • 注册日期2004-02-26
  • 最后登录2008-03-11
  • 粉丝0
  • 关注0
  • 积分111分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-08-24 15:36
学习中!
qsc66886688
驱动牛犊
驱动牛犊
  • 注册日期2007-07-02
  • 最后登录2008-06-06
  • 粉丝0
  • 关注0
  • 积分320分
  • 威望43点
  • 贡献值0点
  • 好评度42点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-09-19 22:38
太厉害啦,在哪找的。我也学了三个月拉,越学越对这个包结构不了解,仅算看到好的了。
游客

返回顶部