克隆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具有指向父结构的指针。 NULL,其中NET_BUFFER_LIST_CONTEXT结构指针将指示子级没有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结构