FwpsAllocateNetBufferAndNetBufferList0 函数 (fwpsk.h)

FwpsAllocateNetBufferAndNetBufferList0 函数分配新的NET_BUFFER_LIST结构。

注意FwpsAllocateNetBufferAndNetBufferList0FwpsAllocateNetBufferAndNetBufferList 的特定版本。 有关详细信息 ,请参阅 WFP Version-Independent 名称和面向 Windows 的特定版本
 

语法

NTSTATUS FwpsAllocateNetBufferAndNetBufferList0(
  [in]           NDIS_HANDLE     poolHandle,
  [in]           USHORT          contextSize,
  [in]           USHORT          contextBackFill,
  [in, optional] MDL             *mdlChain,
  [in]           ULONG           dataOffset,
  [in]           SIZE_T          dataLength,
  [out]          NET_BUFFER_LIST **netBufferList
);

参数

[in] poolHandle

NET_BUFFER_LIST池句柄,该句柄是从上一次调用 NdisAllocateNetBufferListPool 函数获取的。

[in] contextSize

要为标注驱动程序保留 的NET_BUFFER_LIST_CONTEXT 结构中已用数据空间的大小(以字节为单位)。 此参数的值必须是 MEMORY_ALLOCATION_ALIGNMENT定义的值的倍数。

[in] contextBackFill

标注驱动程序所需的未使用数据空间 (回填空间) 的大小(以字节为单位)。 FwpsAllocateNetBufferAndNetBufferList0 函数将此值添加到 ContextSize 参数中指定的值,并分配额外的空间。 此参数的值必须是 MEMORY_ALLOCATION_ALIGNMENT定义的值的倍数。

[in, optional] mdlChain

指向 MDL 链的指针,该链用于初始化预分配NET_BUFFER结构。 此参数是可选的,可以为 NULL

[in] dataOffset

从缓冲区开始到 MDL 链中已用数据空间起始点的初始偏移量(以字节为单位)。 在此偏移量之前的数据空间是未使用的数据空间。 因此,此值还表示 MDL 链中可用回填空间的初始量。

[in] dataLength

MDL 链中已用数据空间的长度(以字节为单位)。

[out] netBufferList

指向变量的指针,该变量接收指向新 NET_BUFFER_LIST 结构的指针。

返回值

FwpsAllocateNetBufferAndNetBufferList0 函数返回以下 NTSTATUS 代码之一。

返回代码 说明
STATUS_SUCCESS
已成功分配新的 NET_BUFFER_LIST 结构。
其他状态代码
出现了错误。

注解

标注驱动程序调用 FwpsAllocateNetBufferAndNetBufferList0 函数来分配新的 NET_BUFFER_LIST 结构。

此函数是围绕 NdisAllocateNetBufferAndNetBufferList 函数,但它专用于由 WFP 数据包注入函数使用。

在新 NET_BUFFER_LIST 结构描述的数据成功注入网络堆栈后,标注驱动程序通过调用 释放新的 NET_BUFFER_LIST 结构 FwpsFreeNetBufferList0 函数。

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
目标平台 通用
标头 fwpsk.h (包括 Fwpsk.h)
Library Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

另请参阅

FwpsFreeNetBufferList0

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool

数据包注入函数