克隆的 NET_BUFFER_LIST 结构

NDIS 驱动程序从现有的 NET_BUFFER_LIST 结构创建克隆的 NET_BUFFER_LIST 结构。 克隆的结构引用原始结构数据。 驱动程序可以使用这种类型的结构将相同的数据有效地传输到多个路径。

下图显示了父NET_BUFFER_LIST结构和克隆的子结构之间的关系。

显示父NET_BUFFER_LIST结构与其克隆的子结构之间的关系的关系图。

上图包含父 NET_BUFFER_LIST 结构和派生自该父级的子结构。 父结构具有一个 NET_BUFFER_LIST_CONTEXT 结构和一个附加了 MDL 的NET_BUFFER 结构。 父结构的父指针为 NULL ,指示它不是派生结构。

子NET_BUFFER_LIST结构具有一个附加了 MDL 的NET_BUFFER结构。 子NET_BUFFER_LIST具有指向父结构的指针。 NET_BUFFER_LIST_CONTEXT 结构指针所在的 NULL 指示子级没有NET_BUFFER_LIST_CONTEXT结构。

驱动程序调用 NdisAllocateCloneNetBufferList 函数来创建克隆 NET_BUFFER_LIST 结构。 NDIS 使用克隆 NET_BUFFER_LIST 结构分配新的NET_BUFFER结构和 MDL。 NDIS 不会为克隆的结构分配 NET_BUFFER_LIST_CONTEXT 结构。 新NET_BUFFER结构和 MDL 描述的数据与父结构中的相同。 不会复制数据。

驱动程序调用 NdisFreeCloneNetBufferList 函数以释放NET_BUFFER_LIST结构以及以前通过调用 NdisAllocateCloneNetBufferList 分配的所有相关NET_BUFFER结构和 MDL 链。

派生的 NET_BUFFER_LIST 结构