前进操作

高级操作可减小NET_BUFFER结构或 NET_BUFFER_LIST 结构中所有 NET_BUFFER结构中 已用数据空间的大小。

驱动程序使用以下高级函数:

NdisAdvanceNetBufferDataStart

NdisAdvanceNetBufferListDataStart

高级操作有时可以释放与NET_BUFFER结构关联的 MDL。 若要提供用于释放 MDL 的机制,驱动程序可以为 NetFreeMdl 函数提供可选的入口点。 如果入口点为 NULL,则 NDIS 使用默认方法来分配 MDL。 只能在 NetFreeMdl 中使用用于在 NetAllocateMdl 函数中分配 MDL 的机制的倒数来释放 MDL。

为了获取新的 DataLength,NDIS 从当前 DataLength 中减去驱动程序指定的 DataOffsetDelta。 如果上一个撤退操作分配了新的数据空间,则高级操作可以释放以前分配的此类内存。 如果高级操作未释放内存,NDIS 只需将 DataOffsetDelta 添加到当前 DataOffset 以获取新的 DataOffset 。 如果提前操作释放了内存,NDIS 会相应地调整 DataOffset

对于发送完整情况,高级操作可以释放在以前的撤退操作中分配的内存。 为了获得更好的性能,驱动程序应在发送之前分配足够的总数据大小,以适应所有基础驱动程序的撤退操作。

对于接收指示情况,高级操作只需相应地调整 DataOffsetDataLength 。 高级操作后,较低层的标头保留在 未使用的数据空间中。