FwpsCloneStreamData0 函数 (fwpsk.h)

FwpsCloneStreamData0 函数分配现有FWPS_STREAM_DATA0数据流的克隆。

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

语法

NTSTATUS FwpsCloneStreamData0(
  [in, out]      FWPS_STREAM_DATA0 *calloutStreamData,
  [in, optional] NDIS_HANDLE       netBufferListPoolHandle,
  [in, optional] NDIS_HANDLE       netBufferPoolHandle,
  [in]           ULONG             allocateCloneFlags,
  [out]          NET_BUFFER_LIST   **netBufferListChain
);

参数

[in, out] calloutStreamData

指向原始 FWPS_STREAM_DATA0 结构的指针,该结构将克隆其 NET_BUFFER_LIST 结构。

[in, optional] netBufferListPoolHandle

NET_BUFFER_LIST池句柄,该句柄是从上次调用 NdisAllocateNetBufferListPool 函数获取的。 此参数是可选的,可以为 NULL

[in, optional] netBufferPoolHandle

NET_BUFFER池句柄,该句柄是从上一次调用获取的 NdisAllocateNetBufferPool 函数。 此参数是可选的,可以为 NULL

[in] allocateCloneFlags

当前没有为此函数定义标志。 标注驱动程序应将此参数设置为零。

[out] netBufferListChain

指向位置的指针,该位置接收指向描述所有克隆流数据的 NET_BUFFER_LIST 结构链的指针。

返回值

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

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

注解

此克隆的流数据稍后可由标注驱动程序注入 TCP/IP 网络堆栈。

FwpsCloneStreamData0 函数克隆现有FWPS_STREAM_DATA0数据流中包含的整个NET_BUFFER_LIST结构链。 函数会剪裁未使用的数据,以便标注驱动程序可以将克隆的链成功传递到 FwpsStreamInjectAsync0 函数。

成功将克隆NET_BUFFER_LIST结构链中的流数据注入网络堆栈后,将为每个克隆NET_BUFFER_LIST结构调用 completionFn 标注函数,标注应调用 FwpsFreeCloneNetBufferList0 以释放克隆NET_BUFFER_LIST结构。

如果要放弃克隆的流数据而不重新插入,则标注应调用 FwpsDiscardClonedStreamData0 函数。

要求

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

另请参阅

FWPS_STREAM_DATA0

FwpsDiscardClonedStreamData0

FwpsFreeCloneNetBufferList0

FwpsStreamInjectAsync0

NET_BUFFER

NET_BUFFER_LIST