阅读:3637回复:9
网络数据包相关结构(新手,NDIS 5.1)
写文档时画的一个图,网络数据包及带外数据、扩展数据结构见的关系,熟手就不用看了
1. 每一个网络数据包都采用NDIS_PACKET结构来描述。该结构主要描述有用的数据部分。而对于与该数据包相关的信息,比如数据包的接收时间,并不算真正的数据,因而称为带外数据,用NDIS_PACKET_OOB_DATA结构来描述。除带外数据外,还有一些跟特定协议有关系的扩展信息,比如tcp/ip的任务下移,则放在扩展数据中描述。扩展数据用NDIS_PACKET_EXTENSION结构来表示; 2. NDIS_PACKET结构有一个Private成员,其类型为NDIS_PACKET_PRIVATE结构体。NDIS_PACKET_PRIVATE中指明了带外数据的偏移; 3. 用数据包描述符地址加上袋外数据偏移,就得到带外数据描述地址; 4. 带外数据描述符地址加上带外数据的大小就得到扩展数据地址。也就是说,扩展数据紧接着带外数据。 |
|
沙发#
发布于:2007-08-23 08:11
好图
|
|
板凳#
发布于:2007-08-23 10:29
不错,应该做介绍数据包的处理图解!
|
|
|
地板#
发布于: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; |
|
地下室#
发布于:2007-08-23 16:42
用户被禁言,该主题自动屏蔽! |
|
5楼#
发布于:2007-08-24 10:34
绝对好图,不顶对不起毛主席。
不过这个图没有说明MediaSpecificInfo如何存放。 另外我还有一个疑问:是否调用NdisMSendComplete后,所有的这些资源都会被上层释放掉? |
|
6楼#
发布于:2007-08-24 12:22
当时还没想到MediaSpecificInfo的具体内容
按照文档说明NdisMSendComplete后,ProtocolSendComplete应该会被调用,进而会释放相关资源吧 引用第5楼jamesking于2007-08-24 10:34发表的 : |
|
7楼#
发布于:2007-08-24 14:11
引用第2楼numenshane于2007-08-23 10:29发表的 : 这个图越看越喜欢,呵呵! 顶下! 支持数据包处理图解!!!hoho!!盼望图解出炉!!! |
|
8楼#
发布于:2007-08-24 15:36
学习中!
|
|
9楼#
发布于:2007-09-19 22:38
太厉害啦,在哪找的。我也学了三个月拉,越学越对这个包结构不了解,仅算看到好的了。
|
|