W_TCP_OFFLOAD_FORWARD_HANDLER - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// ndischimney.h

W_TCP_OFFLOAD_FORWARD_HANDLER WTcpOffloadForwardHandler;

NDIS_STATUS WTcpOffloadForwardHandler(
  [in] IN NDIS_HANDLE MiniportAdapterContext,
  [in] IN PVOID MiniportOffloadContext,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nc-ndischimney-w_tcp_offload_forward_handler)

W_TCP_OFFLOAD_FORWARD_HANDLER callback function

Description

[The TCP chimney offload feature is deprecated and should not be used.]

NDIS calls the MiniportTcpOffloadForward function to forward unacknowledged received TCP segments to an offload target.

Parameters

MiniportAdapterContext [in]

The handle to an offload-target allocated context area in which the offload target maintains state information about this instance of the adapter. The miniport driver provided this handle to NDIS when it called NdisMSetMiniportAttributes from its MiniportInitializeEx function.

MiniportOffloadContext [in]

A pointer to a memory location that contains a PVOID value. This PVOID value references the miniport offload context that contains the state object for the TCP connection for which the TCP segments are being forwarded. The offload target supplied this PVOID value when it offloaded the TCP connection state object.

NetBufferList [in]

A pointer to a NET_BUFFER_LIST structure. This structure may be a stand-alone structure or the first structure in a linked list of NET_BUFFER_LIST structures. Each NET_BUFFER_LIST structure in the list describes one NET_BUFFER structure. Each NET_BUFFER structure maps to a chain of memory descriptor lists (MDLs). The MDLs associated with a NET_BUFFER structure contain one and only one TCP segment that is being forwarded to the offload target. The first byte of the first MDL is the first byte of the TCP header. The NET_BUFFER_LIST and associated structures are locked so that they remain resident in physical memory. However, they are not mapped into system memory.

Return value

NDIS_STATUS_PENDING is the only allowable return value. An offload target always completes a forward request asynchronously by calling the NdisTcpOffloadForwardComplete function.

Remarks

The host stack forwards one or more TCP segments that it has received but not acknowledged in the following situations:

The host stack never attempts to forward TCP segments for a TCP connection when:

The host stack forwards TCP segments--not IP datagrams--to an offload target. Therefore, the only header that the host stack supplies for each segment is the TCP header, including any TCP options that are present. This is all the header information that the offload target needs to process the received segment.

When forwarding TCP segments, the host stack transfers one TCP segment per NET_BUFFER structure. The host stack associates just one NET_BUFFER structure, and therefore one forwarded TCP segment, with each NET_BUFFER_LIST structure in the linked list.

The host stack allocates the NET_BUFFER_LIST and associated structures that NDIS passes to the MiniportTcpOffloadForward function. The offload target owns these resources until it passes them to the NdisTcpOffloadForwardComplete function. While it owns these resources, the offload target is free to queue them for processing.

See also

MiniportInitializeEx

NET_BUFFER_LIST

NdisMSetMiniportAttributes

NdisTcpOffloadForwardComplete