Share via


FwpsCloneStreamData0 (Compact 7)

3/12/2014

This function allocates a clone of an existing FWPS_STREAM_DATA0**data stream.

Syntax

NTSTATUS NTAPI
  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
    );

Parameters

  • calloutStreamData
    A pointer to the original FWPS_STREAM_DATA0 structure that is to have its NET_BUFFER_LIST structure cloned
  • netBufferListPoolHandle
    A NET_BUFFER_LIST pool handle that was obtained from a previous NdisAllocateNetBufferListPool function call. This parameter is optional and can be NULL
  • allocateCloneFlags
    No flags are currently defined for this function. Callout drivers should set this parameter to zero.
  • netBufferListChain
    A pointer to a location that receives a pointer to a chain of NET_BUFFER_LIST structures, that describe all the cloned stream data.

Return Value

The FwpsCloneStreamData0 function returns one of the following NTSTATUS codes:

Value Description

STATUS_SUCCESS

The clone FWPS_STREAM_DATA0 structure was successfully allocated.

Other status codes

An error occurred.

Remarks

This cloned stream data can be injected by a callout driver into the TCP/IP network stack later.

The FwpsCloneStreamData0 function clones the complete chain of NET_BUFFER_LIST structures contained in the existing FWPS_STREAM_DATA0 data stream. The function trims unused data so that a callout driver can successfully pass the cloned chain to the FwpsStreamInjectAsync0 function.

After stream data in the clone NET_BUFFER_LIST structure chain is successfully injected into the network stack, the completionFn callout function is called for each clone NET_BUFFER_LIST structure, and a callout should call FwpsFreeCloneNetBufferList0 to free the clone NET_BUFFER_LIST structure.

A callout should call the FwpsDiscardClonedStreamData0 function if the cloned stream data is to be discarded without being reinjected.

Requirements

Header

fwpsk.h

See Also

Reference

Functions Called by Callout Drivers
FWPS_STREAM_DATA0
NET_BUFFER_LIST
NdisAllocateNetBufferListPool
NET_BUFFER
NdisAllocateNetBufferPool
FwpsDiscardClonedStreamData0
FwpsFreeCloneNetBufferList0
FwpsStreamInjectAsync0
WFP Callout Driver Functions