NdisAdvanceNetBufferDataStart 函数 (ndis/nblapi.h)

调用 NdisAdvanceNetBufferDataStart 函数以释放随 添加的已用数据空间 NdisRetreatNetBufferDataStart 函数。

语法

NDIS_EXPORTED_ROUTINE VOID NdisAdvanceNetBufferDataStart(
  [in]           NET_BUFFER          *NetBuffer,
  [in]           ULONG               DataOffsetDelta,
  [in]           BOOLEAN             FreeMdl,
  [in, optional] NET_BUFFER_FREE_MDL *FreeMdlHandler
);

参数

[in] NetBuffer

指向以前分配 的NET_BUFFER 结构的指针。

[in] DataOffsetDelta

要释放 的已用数据空间 量。 NDIS 相应地调整NET_BUFFER结构的 DataOffset 成员的值。

[in] FreeMdl

一个 BOOLEAN 值,如果 为 TRUE,则请求 NDIS 释放在高级操作中未使用的任何 MDL。 如果 FreeMdlFALSE,则 NDIS 将保留未使用的 MDL,以便在后续的撤退操作中使用。

[in, optional] FreeMdlHandler

NetFreeMdl 函数的可选入口点。 如果调用方为 NetFreeMdl 函数指定入口点,则 NDIS 将调用 NetFreeMdl 以释放 MDL 和内存。

返回值

备注

如果 NDIS 分配了内存来满足对 的相应调用 NdisRetreatNetBufferDataStart 函数,然后 NdisAdvanceNetBufferDataStart 释放 NdisRetreatNetBufferDataStart 分配的内存。 否则,内存将保留在 MDL 中,并且仅修改NET_BUFFER结构的 DataOffset 成员的值。

如果 NdisAdvanceNetBufferDataStart 必须释放内存,则 NDIS 将调用在 FreeMdl 中指定的 NetFreeMdl 函数。 NDIS 调用 NetFreeMdl 只是为了释放驱动程序在 NetAllocateMdl 函数中分配的 MDL 和内存。

当协议驱动程序在接收路径上调用 NdisAdvanceNetBufferDataStart 以访问各种传输标头时,不应修改 MDL 链, 并且 FreeMdlFALSE

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 通用
标头 ndis/nblapi.h (包括 ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_NetBuffer_Function (ndis)

另请参阅

NET_BUFFER

NdisRetreatNetBufferDataStart

NetAllocateMdl

NetFreeMdl