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 结构的 fAllocateNetBufferListPool 成员必须设置为 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 片段列表组合到单个数据包中。 重新组合的数据包是一个包含一个 net 缓冲区并引用输入片段链的单个净缓冲区列表。 边缘防火墙通常使用此函数来检查网络数据包。
IP 片段的输入链(fragmentGroupNblChain)必须是在设置FWP_CONDITION_FLAG_IS_FRAGMENT_GROUP标志时,由 classifyFn 标注函数指示FWPS_LAYER_IPFORWARD_V4层或FWPS_LAYER_IPFORWARD_V6层的输入链。 如果情况并非如此,则未定义 FwpsReassembleForwardFragmentGroup0 的行为。
调用 FwpsFreeNetBufferList0 函数以释放 重新组合的Nbl NET_BUFFER_LIST 结构和所有关联的 NET_BUFFER 结构和 MDL 链。 FwpsFreeNetBufferList0 取消引用原始输入片段链。
可以使用以下命令查看系统的当前“组转发片段”设置:netsh 接口 {ipv4|ipv6} 显示全局。
由于 FwpsReassembleForwardFragmentGroup0 引用输入片段链,因此在调用此函数之前,无需标注引用或克隆链。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows Server 2008 开始可用。 |
目标平台 | 普遍 |
标头 | fwpsk.h (包括 Fwpsk.h) |
库 | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |
另请参阅
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferListPool