Condividi tramite


W_TCP_OFFLOAD_FORWARD_HANDLER funzione di callback (ndischimney.h)

[La funzionalità offload del camino TCP è deprecata e non deve essere usata.]

NDIS chiama la funzione miniportTcpOffloadForward per inoltrare i segmenti TCP ricevuti non riconosciuti a una destinazione offload.

Sintassi

W_TCP_OFFLOAD_FORWARD_HANDLER WTcpOffloadForwardHandler;

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

Parametri

[in] MiniportAdapterContext

Handle in un'area di contesto allocata di destinazione offload in cui la destinazione di offload mantiene le informazioni sullo stato relative a questa istanza dell'adattatore. Il driver miniport ha fornito questo handle a NDIS quando ha chiamato NdisMSetMiniportAttributes dal relativo funzione miniportInitializeEx.

[in] MiniportOffloadContext

Puntatore a una posizione di memoria contenente un valore PVOID. Questo valore PVOID fa riferimento al contesto di offload miniport che contiene l'oggetto stato per la connessione TCP per cui vengono inoltrati i segmenti TCP. La destinazione di offload ha fornito questo valore PVOID quando ha scaricato l'oggetto stato della connessione TCP.

[in] NetBufferList

Puntatore a una struttura NET_BUFFER_LIST. Questa struttura può essere una struttura autonoma o la prima struttura in un elenco collegato di strutture NET_BUFFER_LIST. Ogni struttura NET_BUFFER_LIST nell'elenco descrive una struttura NET_BUFFER. Ogni struttura NET_BUFFER viene mappata a una catena di elenchi dei descrittori di memoria (MDLs). Gli mdls associati a una struttura di NET_BUFFER contengono uno e un solo segmento TCP inoltrato alla destinazione di offload. Il primo byte del primo MDL è il primo byte dell'intestazione TCP. Le NET_BUFFER_LIST e le strutture associate sono bloccate in modo che rimangano residenti nella memoria fisica. Tuttavia, non vengono mappati alla memoria di sistema.

Valore restituito

NDIS_STATUS_PENDING è l'unico valore restituito consentito. Una destinazione di offload completa sempre una richiesta di inoltro in modo asincrono chiamando funzione NdisTcpOffloadForwardComplete.

Osservazioni

Lo stack host inoltra uno o più segmenti TCP ricevuti ma non riconosciuti nelle situazioni seguenti:

  • Lo stack host ha ricevuto i segmenti in una connessione TCP che è stata scaricata nella destinazione di offload. Poiché la connessione non è stata completamente scaricata, la destinazione di offload non è riuscita a elaborare i segmenti TCP in quel momento.
  • Lo stack host si trova in un sistema multihomed che ha ricevuto i segmenti in un'interfaccia di rete diversa da quella in cui viene scaricata la connessione TCP.
  • La destinazione di offload in precedenza indicava i pacchetti ricevuti con opzioni IP impostate e/o che erano frammenti che richiedevano la riassemblazione. Dopo aver elaborato le opzioni IP e/o aver riassemblato correttamente i pacchetti, lo stack host inoltra i segmenti TCP alla destinazione di offload.
Lo stack host non tenta mai di inoltrare i segmenti TCP per una connessione TCP quando:
  • La connessione viene scaricata. Lo stack host attende sempre il completamento dell'offload della connessione prima di inoltrare eventuali pacchetti per tale connessione. Lo stack host inoltra i segmenti TCP il prima possibile dopo il completamento dell'offload della connessione. Tuttavia, non esiste alcun limite di tempo per l'inoltro di tali segmenti.
  • L'offload di tale connessione viene terminato. In questo caso, lo stack host memorizza i dati nel buffer fino al completamento dell'offload e quindi elabora i segmenti.
Lo stack host inoltra i segmenti TCP, non i datagrammi IP, a una destinazione di offload. Pertanto, l'unica intestazione fornita dallo stack host per ogni segmento è l'intestazione TCP, incluse tutte le opzioni TCP presenti. Si tratta di tutte le informazioni di intestazione che la destinazione di offload deve elaborare il segmento ricevuto.

Quando si inoltrano segmenti TCP, lo stack host trasferisce un segmento TCP per ogni struttura NET_BUFFER. Lo stack host associa una sola struttura NET_BUFFER, quindi un segmento TCP inoltrato, a ogni struttura NET_BUFFER_LIST nell'elenco collegato.

Lo stack host alloca le strutture NET_BUFFER_LIST e associate che NDIS passa alla funzione MiniportTcpOffloadForward. La destinazione di offload è proprietaria di queste risorse fino a quando non le passa al funzione NdisTcpOffloadForwardComplete. Anche se è proprietaria di queste risorse, la destinazione di offload è gratuita per accodarle per l'elaborazione.

Fabbisogno

Requisito Valore
piattaforma di destinazione Finestre
intestazione ndischimney.h (include Ndischimney.h)
IRQL Qualsiasi livello

Vedere anche

MiniportInitializeEx

NET_BUFFER_LIST

NdisMSetMiniportAttributes

NdisTcpOffloadForwardComplete