NdisRetreatNetBufferListDataStart 函数 (ndis/nblapi.h)

调用 NdisRetreatNetBufferListDataStart 函数,以增加 NET_BUFFER_LIST 结构中所有 NET_BUFFER 结构中使用的数据 空间

语法

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferListDataStart(
  [in]           NET_BUFFER_LIST         *NetBufferList,
  [in]           ULONG                   DataOffsetDelta,
  [in]           ULONG                   DataBackFill,
  [in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler,
  [in, optional] NET_BUFFER_FREE_MDL     *FreeMdlHandler
);

参数

[in] NetBufferList

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

[in] DataOffsetDelta

每个NET_BUFFER结构中已用数据空间 的额外 量。 如果没有足够的 未使用的数据空间 来满足请求,NDIS 会分配更多的内存。

[in] DataBackFill

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

[in, optional] AllocateMdlHandler

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

[in, optional] FreeMdlHandler

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

返回值

NdisRetreatNetBufferListDataStart 返回以下项之一:

返回代码 描述
NDIS_STATUS_SUCCESS
NdisRetreatNetBufferListDataStart 通过减少 DataOffset 成员的值或分配新存储来成功分配所有NET_BUFFER结构上的数据空间。
NDIS_STATUS_RESOURCES
NdisRetreatNetBufferListDataStart 由于资源不足而失败。
NDIS_STATUS_FAILURE
NdisRetreatNetBufferListDataStart 由于资源不足的原因而失败。

言论

调用 NdisRetreatNetBufferListDataStart 等效于调用 NdisRetreatNetBufferDataStart 函数,用于 NET_BUFFER_LIST 结构上每个 NET_BUFFER 结构。 NdisRetreatNetBufferListDataStart 尝试通过减少每个NET_BUFFER结构中的 DataOffset 成员的值来满足请求。 如果没有足够的 未使用的数据空间 可用,则此函数会分配新的缓冲区和 MDL,然后将新的 MDL 链链接到NET_BUFFER结构上的 MDL 链的开头。

调用 NdisAdvanceNetBufferListDataStart 函数释放在上一个 NdisRetreatNetBufferListDataStart 调用中声明的数据空间。 或者,驱动程序可以调用 NdisAdvanceNetBufferDataStart 函数,用于NET_BUFFER_LIST结构上每个NET_BUFFER结构。 调用 NdisAdvanceNetBufferListDataStart 更高效。

要求

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

另请参阅

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart NdisAdvanceNetBufferListDataStart NdisRetreatNetBufferDataStart

NetAllocateMdl

NetFreeMdl