NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE funzione di callback (ndischimney.h)

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

Una destinazione offload chiama la funzione NdisTcpOffloadReceiveComplete per restituire le richieste di ricezione inviate (buffer di ricezione) allo stack host. La destinazione di offload in precedenza ha ricevuto 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 all'oggetto 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 di offload deve usare e restituire le richieste di ricezione in base all'ordine in cui sono state inviate le richieste Funzione MiniportTcpOffloadReceive della destinazione di offload. Vale a dire, la destinazione di offload deve usare e restituire le richieste di ricezione in primo luogo nell'ordine FIFO (First Out).

Una destinazione offload deve serializzare le chiamate alla funzione NdisTcpOffloadReceiveComplete e alla Funzione NdisTcpOffloadReceiveHandler per ogni connessione.

La funzione MiniportTcpOffloadReceive di una destinazione di offload può essere chiamata nel contesto della chiamata di destinazione offload alla funzione NdisTcpOffloadReceiveComplete . In questo caso, una destinazione di offload non deve chiamare nuovamente la funzione NdisTcpOffloadReceiveComplete fino a quando 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 NET_BUFFER_LIST da più chiamate al relativo Funzione MiniportTcpOffloadReceive . La destinazione di offload può passare un elenco collegato in una singola chiamata alla funzione NdisTcpOffloadReceiveComplete . Si noti che una destinazione di offload può distribuire le richieste di ricezione pubblicate in una singola chiamata all'oggetto La funzione 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 NdisTcpOffloadReceiveComplete , la destinazione 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 NET_BUFFER_LIST a cui fa riferimento il parametro NetBufferList . La destinazione di offload ha anche 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 della destinazione di offload dei dati ricevuti. Se la destinazione di offload fornisce alcuni dati validi con le strutture 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 una parte dei dati ricevuti.
    NDIS_STATUS_UPLOAD_IN_PROGRESS
    Connessione in cui è stato caricato il buffer.
    NDIS_STATUS_INVALID_STATE
    La richiesta di ricezione è stata pubblicata 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 idTcpOffloadBytesTransferred.
  • 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 di descrittori di memoria (MDL) associati alla struttura NET_BUFFER. Il parametro FreeMdl deve essere NULL.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ndischimney.h (includere Ndischimney.h)
IRQL Qualsiasi livello

Vedi anche

MiniportTcpOffloadReceive

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver