FwpsCloneStreamData0 函数 (fwpsk.h)
FwpsCloneStreamData0 函数分配现有FWPS_STREAM_DATA0数据流的克隆。
语法
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 代码之一。
返回代码 | 说明 |
---|---|
|
已成功分配克隆 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 |