FwpsReassembleForwardFragmentGroup0 函数 (fwpsk.h)
FwpsReassembleForwardFragmentGroup0 函数将转发数据路径中的 IP 片段列表组合成单个数据包。
语法
NTSTATUS FwpsReassembleForwardFragmentGroup0(
[in] ADDRESS_FAMILY addressFamily,
[in, out] NET_BUFFER_LIST *fragmentGroupNblChain,
[in, optional] NDIS_HANDLE netBufferAndNetBufferListPoolHandle,
[in] ULONG dataBackFill,
[in] ULONG flags,
[out] NET_BUFFER_LIST **reassembledNbl
);
参数
[in] addressFamily
以下地址系列之一:
AF_INET
IPv4 地址系列。
AF_INET6
IPv6 地址系列。
[in, out] fragmentGroupNblChain
指向要重新组合成单个数据包的 IP 片段 NET_BUFFER_LIST 链的指针。 有关此参数用法的详细信息,请参阅备注。
[in, optional] netBufferAndNetBufferListPoolHandle
以前从 返回 的可选NET_BUFFER_LIST结构池句柄 NdisAllocateNetBufferListPool 函数。 调用方传递给 NdisAllocateNetBufferListPool 的 NET_BUFFER_LIST_POOL_PARAMETERS 结构的 fAllocateNetBuffer 成员必须设置为 TRUE,DataSize 成员必须设置为零。 如果此参数为 NULL,则 NDIS 使用内部池。
[in] dataBackFill
如果需要分配未使用的数据空间 (回填空间) ,则此参数指定要分配的未使用数据空间的字节数。
[in] flags
保留。 标注驱动程序必须将此参数设置为零。
[out] reassembledNbl
指向 NET_BUFFER_LIST 指针的指针,该指针接收已重新组合的单个网络缓冲区列表的地址。
返回值
FwpsReassembleForwardFragmentGroup0 函数返回以下 NTSTATUS 代码之一。
返回代码 | 说明 |
---|---|
|
IP 片段列表已成功重新组合成单个 NET_BUFFER_LIST 结构。 |
|
TCP/IP 网络堆栈尚未准备好执行数据包重新组合。 如果在加载 Tcpip.sys 之前或卸载 Tcpip.sys 之后调用此函数,则会发生此错误。 |
|
出现了错误。 |
注解
FwpsReassembleForwardFragmentGroup0 函数将转发数据路径中由NET_BUFFER_LIST链描述的 IP 片段列表组合成单个数据包。 重新组合的数据包是包含一个网络缓冲区并引用输入片段链的单个网络缓冲区列表。 边缘防火墙通常使用此函数来检查网络数据包。
IP 片段的输入链 fragmentGroupNblChain 必须是在设置FWP_CONDITION_FLAG_IS_FRAGMENT_GROUP标志时,由 classifyFn 标注函数指示FWPS_LAYER_IPFORWARD_V4或FWPS_LAYER_IPFORWARD_V6层的输入链。 如果不是这种情况,则 FwpsReassembleForwardFragmentGroup0 的行为未定义。
调用 FwpsFreeNetBufferList0 函数以释放 reassembledNbl NET_BUFFER_LIST 结构以及所有相关 NET_BUFFER 结构和 MDL 链。 FwpsFreeNetBufferList0 取消引用原始输入片段链。
可以使用以下命令查看系统的当前“组转发片段”设置: netsh 接口 {ipv4|ipv6} show global。
由于 FwpsReassembleForwardFragmentGroup0 引用输入片段链,因此在调用此函数之前,标注不需要引用或克隆该链。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows Server 2008 开始可用。 |
目标平台 | 通用 |
标头 | fwpsk.h (包括 Fwpsk.h) |
Library | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |
另请参阅
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferListPool