W_TCP_OFFLOAD_FORWARD_HANDLER funzione di callback (ndischimney.h)

[La funzionalità di 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 di 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 gestisce le informazioni sullo stato relative a questa istanza dell'adattatore. Il driver miniport ha fornito questo handle a NDIS quando viene chiamato NdisMSetMiniportAttributes da 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 esegue il mapping a una catena di elenchi di descrittori di memoria (MDLs). Gli ELENCHI DI dati associato a una struttura 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 offload completa sempre una richiesta di inoltro in modo asincrono chiamando Funzione NdisTcpOffloadForwardComplete .

Commenti

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 offloaded alla 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 offcaricata la connessione TCP.
  • La destinazione di offload in precedenza indicava i pacchetti ricevuti con opzioni IP impostate e/o che erano frammenti che richiedevano il riassemblaggio. 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 segmenti TCP per una connessione TCP quando:
  • La connessione è in fase di offload. 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 appena 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 nel buffer i dati fino al completamento dell'offload e quindi elabora i segmenti.
Lo stack host inoltra i segmenti TCP, non gli schemi di dati IP, a una destinazione di offload. Di conseguenza, 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 e quindi un segmento TCP inoltrato, con ogni struttura NET_BUFFER_LIST nell'elenco collegato.

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

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione ndischimney.h (include Ndischimney.h)
IRQL Qualsiasi livello

Vedi anche

MiniportInitializeEx

NET_BUFFER_LIST

NdisMSetMiniportAttributes

NdisTcpOffloadForwardComplete