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

指向要克隆其 NET_BUFFER_LIST 结构的原始 FWPS_STREAM_DATA0 结构的指针。

[in, optional] netBufferListPoolHandle

从先前调用 NdisAllocateNetBufferListPool 函数获得的 NET_BUFFER_LIST 池句柄。 此参数是可选的,可以 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)
Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

另请参阅

FWPS_STREAM_DATA0

FwpsDiscardClonedStreamData0

FwpsFreeCloneNetBufferList0

FwpsStreamInjectAsync0

NET_BUFFER

NET_BUFFER_LIST