Condividi tramite


NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE funzione di callback (ndischimney.h)

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

Una destinazione di offload chiama la funzione NdisTcpOffloadReceiveComplete per restituire le richieste di ricezione inviate (buffer di ricezione) allo stack host. La destinazione di offload ha ricevuto in precedenza le richieste di ricezione in una o più chiamate al relativo funzione miniportTcpOffloadReceive.

Sintassi

NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;

void NdisTcpOffloadReceiveComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Parametri

[in] NdisMiniportHandle

Handle ottenuto dalla destinazione di offload in una chiamata precedente a funzione NdisMRegisterMiniportDriver.

[in] NetBufferList

Puntatore a una struttura NET_BUFFER_LIST. Questa struttura può essere autonoma o la prima struttura in un elenco collegato di strutture NET_BUFFER_LIST. La destinazione di offload ha ottenuto queste strutture in una o più chiamate al relativo funzione miniportTcpOffloadReceive.

Valore restituito

Nessuno

Osservazioni

Una destinazione offload deve usare e restituire richieste di ricezione assurde nell'ordine in cui le richieste sono state inviate al funzione miniportTcpOffloadReceive della destinazione di offload. Ovvero, la destinazione di offload deve usare e restituire richieste di ricezione assurde prima in ordine FIFO (First Out).

Una destinazione offload deve serializzare le chiamate alla funzione NdisTcpOffloadReceiveComplete e a funzione NdisTcpOffloadOffloadReceiveHandler per ogni -connection.

È possibile chiamare funzione miniportTcpOffloadReceive di una destinazione offload nel contesto della chiamata di una destinazione offload alla funzione NdisTcpOffloadReceiveComplete. In questo caso, una destinazione di offload non deve chiamare di nuovo la funzione NdisTcpOffloadReceiveComplete finché non viene restituita la chiamata precedente a NdisTcpOffloadReceiveComplete.

Per migliorare le prestazioni del sistema, una destinazione di offload può creare un elenco collegato contenente le strutture di NET_BUFFER_LIST da più chiamate alla relativa funzione miniportTcpOffloadReceive. La destinazione di offload può passare tale elenco collegato in una singola chiamata alla funzione NdisTcpOffloadReceiveComplete. Si noti che una destinazione di offload può distribuire le richieste di ricezione inviate in una singola chiamata al funzione di MiniportTcpOffloadReceive in più di una chiamata di completamento, purché la destinazione di offload completi le richieste di ricezione nello stesso ordine in cui sono state inviate alla funzione MiniportTcpOffloadReceive.

Prima di chiamare la funzione NdisTcpOffloadOffloadReceiveComplete, la destinazione di offload esegue le operazioni seguenti per ogni struttura NET_BUFFER_LIST che passa alla funzione:

  • Scrive uno dei valori di stato seguenti nel membro Status:
    NDIS_STATUS_SUCCESS
    La destinazione di offload ha ricevuto tutti i dati associati alle strutture di NET_BUFFER_LIST a cui fa riferimento il parametro NetBufferList. La destinazione di offload ha inoltre avanzato le variabili rcvNxt e RcvWnd nello stato delegato TCP per la connessione TCP. La destinazione di offload potrebbe o non aver generato un riconoscimento per i dati ricevuti, a seconda che la destinazione di offload sia in attesa di inviare un riconoscimento ritardato.
    NDIS_STATUS_REQUEST_ABORTED
    Si è verificato un errore durante l'elaborazione dei dati ricevuti dalla destinazione di offload. Se la destinazione di offload fornisce alcuni dati validi con le strutture di NET_BUFFER_LIST a cui punta il parametro NetBufferList, la destinazione di offload specifica il numero di byte di dati validi chiamando la macro NET_BUFFER_LIST_INFO. La destinazione di offload potrebbe o non aver riconosciuto parte dei dati ricevuti.
    NDIS_STATUS_UPLOAD_IN_PROGRESS
    La connessione in cui è stato pubblicato il buffer viene caricata.
    NDIS_STATUS_INVALID_STATE
    La richiesta di ricezione è stata inviata dopo che la destinazione di offload ha indicato una disconnessione chiamando NdisTcpOffloadEventHandler.
  • Specifica il numero di byte di dati restituiti chiamando la macro NET_BUFFER_LIST_INFO con un ID di TcpOffloadBytesTransferred.
  • Chiama l'oggetto funzione NdisAdvanceNetBufferDataStart. Il parametro NetBufferList deve puntare alla struttura NET_BUFFER associata alla struttura NET_BUFFER_LIST. Il parametro DataOffsetDelta deve specificare il numero di byte di dati che la destinazione di offload inserita negli elenchi dei descrittori di memoria (MDLs) associati alla struttura NET_BUFFER. Il parametro FreeMdl deve essere NULL.

Fabbisogno

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

Vedere anche

miniportTcpOffloadReceive

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver