网络数据结构

网络数据由通过网络发送或接收的数据包组成。 NDIS 提供数据结构来描述和组织此类数据。 NDIS 6.0 及更高版本的主要网络数据结构包括:

下图说明了这些结构之间的关系。

说明 NDIS 6.0 网络数据结构的示意图,包括NET_BUFFER、NET_BUFFER_LIST和NET_BUFFER_LIST_CONTEXT。

在 NDIS 6.0 及更高版本中, NET_BUFFER 是打包网络数据的基本构建基块。 每个NET_BUFFER结构都有一个 MDL 链。 MDL 将数据缓冲区的地址映射到NET_BUFFER结构指定的数据空间。 此数据映射与 NDIS 5 的 MDL 链相同。x 和更早版本的驱动程序在 NDIS_PACKET 结构中使用 。 NDIS 提供用于操作 MDL 链的函数。

可以将多个NET_BUFFER结构附加到NET_BUFFER_LIST结构。 NET_BUFFER结构组织为以 NULL 结尾的单独链接列表。 只有源自 NET_BUFFER_LIST 结构的驱动程序(即 NDIS)应直接修改链接列表以插入和删除NET_BUFFER结构。

NET_BUFFER LIST 结构包含描述附加到列表的所有 NET_BUFFER 结构的信息。 如果驱动程序需要额外的空间来存储上下文信息,驱动程序可以将此类信息存储在NET_BUFFER_LIST_CONTEXT结构中。 NDIS 提供用于分配、释放和访问NET_BUFFER_LIST_CONTEXT结构中的数据的函数。

可以附加多个NET_BUFFER_LIST结构以形成NET_BUFFER_LIST结构的列表。 NET_BUFFER_LIST结构组织为以 NULL 结尾的单独链接列表。 驱动程序可以直接修改链接列表以插入和删除NET_BUFFER_LIST结构。

NET_BUFFER

NET_BUFFER 结构

NET_BUFFER LIST

NET_BUFFER_LIST 结构

NET_BUFFER_LIST_CONTEXT

NET_BUFFER_LIST_CONTEXT 结构