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

另请参阅

NET_BUFFER

NdisAdvanceNetBufferDataStart

NetAllocateMdl