NdisRetreatNetBufferDataStart 函数 (ndis/nblapi.h)

调用 NdisRetreatNetBufferDataStart 函数,以访问NET_BUFFER结构的 MDL 链中的更多已用数据空间

语法

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferDataStart(
  [in]           NET_BUFFER              *NetBuffer,
  [in]           ULONG                   DataOffsetDelta,
  [in]           ULONG                   DataBackFill,
  [in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler
);

参数

[in] NetBuffer

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

[in] DataOffsetDelta

要添加 的数据空间 量。 NDIS 相应地调整NET_BUFFER结构的 DataOffset 成员。 如果没有足够的 未使用的数据空间 来满足请求,NDIS 会分配额外的内存。

[in] DataBackFill

如果 NDIS 必须分配内存,此参数除了 要分配的 DataOffsetDelta 参数的值外,还指定数据空间量。

[in, optional] AllocateMdlHandler

NetAllocateMdl 函数的可选入口点。 如果调用方指定 NetAllocateMdl 函数的入口点,NDIS 将调用 NetAllocateMdl 来分配 MDL 和内存。

返回值

NdisRetreatNetBufferDataStart 返回以下项之一:

返回代码 说明
NDIS_STATUS_SUCCESS
NdisRetreatNetBufferDataStart 通过使用未使用的数据空间或分配新存储成功分配了已用数据空间
NDIS_STATUS_RESOURCES
由于资源不足,NdisRetreatNetBufferDataStart 失败。
NDIS_STATUS_FAILURE
由于资源不足的原因,NdisRetreatNetBufferDataStart 失败。

备注

NdisRetreatNetBufferDataStart 尝试通过减少NET_BUFFER结构的 DataOffset 成员的值来满足请求。

如果没有足够的 未使用的数据空间,此函数将分配一个新缓冲区和一个 MDL 来描述新缓冲区,并将新的 MDL 链接到 MDL 链的开头。 NDIS 调用在 AllocateMdl 中指定的 NetAllocateMdl 函数来分配 MDL 和内存。 NetAllocateMdl 函数可以使用满足驱动程序设计要求的任何分配方法。

调用 NdisAdvanceNetBufferDataStart 函数,用于释放随 NdisRetreatNetBufferDataStart 一起添加的已用数据空间

要求

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

另请参阅

NET_BUFFER

NdisAdvanceNetBufferDataStart

NetAllocateMdl