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

布尔值,如果 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 (include ndis.h)
Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_NetBuffer_Function(ndis)

另请参阅

NET_BUFFER

NdisRetreatNetBufferDataStart

NetAllocateMdl

NetFreeMdl