NdisAllocateReassembledNetBufferList 函数 (ndis/nblapi.h)

调用 NdisAllocateReassembledNetBufferList 函数以重新组合碎片 NET_BUFFER_LIST 结构。

语法

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateReassembledNetBufferList(
                 NET_BUFFER_LIST *FragmentNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferAndNetBufferListPoolHandle,
  [in]           ULONG           StartOffset,
  [in]           ULONG           DataOffsetDelta,
  [in]           ULONG           DataBackFill,
  [in]           ULONG           AllocateReassembleFlags
);

参数

FragmentNetBufferList

指向要重新组合的NET_BUFFER_LIST结构的指针。

[in, optional] NetBufferAndNetBufferListPoolHandle

以前从 返回的NET_BUFFER_LIST结构池句柄 NdisAllocateNetBufferListPool 函数。 调用方传递给 NdisAllocateNetBufferListPoolNET_BUFFER_LIST_POOL_PARAMETERS 结构的 fAllocateNetBuffer 成员必须设置为 TRUE,DataSize 成员必须设置为零。 如果此参数为 NULL,则 NDIS 使用内部池。

[in] StartOffset

每个源 NET_BUFFER 结构开头要跳过的数据量。 此量是NET_BUFFER结构的 DataOffset 成员中指定的值的补充。

[in] DataOffsetDelta

在重新组合的 NET_BUFFER 结构中要添加到的 已用数据空间 的字节数。

[in] DataBackFill

如果需要分配未使用的数据空间 (回填空间) ,则此参数指定要分配的 DataOffsetDelta 之外的未使用数据空间的字节数。

[in] AllocateReassembleFlags

可与 OR 操作组合的 NDIS 标志。 将此参数设置为零。 当前没有为此函数定义标志。

返回值

如果重新汇编操作成功, NdisAllocateReassembledNetBufferList 将返回重新组合NET_BUFFER_LIST结构。 如果操作失败,则返回 NULL

注解

NdisAllocateReassembledNetBufferList 分配、初始化和返回一个新的 NET_BUFFER_LIST 结构,其中包括一个 NET_BUFFER 结构和一个 MDL 链。 新的 NET_BUFFER_LIST 结构描述的数据与驱动程序在 FragmentedNetBufferList 中传递的分段源NET_BUFFER_LIST结构相同。 在每个分段NET_BUFFER结构中跳过 StartOffset 中指定的字节数后,NDIS 会将每个分段NET_BUFFER结构中的剩余数据连接到一个重新组合NET_BUFFER结构中。 重新组合NET_BUFFER_LIST结构不包括初始 NET_BUFFER_LIST_CONTEXT 结构。

调用 NdisFreeReassembledNetBufferList 函数,用于释放重新组装NET_BUFFER_LIST结构以及所有相关NET_BUFFER结构和 MDL 链。

要求

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

另请参阅

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NET_BUFFER_LIST_POOL_PARAMETERS

NdisAllocateNetBufferListPool NdisFreeReassembledNetBufferList