Condividi tramite


NDIS_TCP_OFFLOAD_SEND_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 NdisTcpOffloadSendComplete per completare una o più richieste di invio effettuate alla funzione MiniportTcpOffloadSend della destinazione di offload.

Sintassi

NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;

void NdisTcpOffloadSendComplete(
  [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 una struttura 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 MiniportTcpOffloadSend .

Valore restituito

nessuno

Osservazioni

Per migliorare le prestazioni del sistema, una destinazione di offload può creare un elenco collegato contenente strutture NET_BUFFER_LIST da più chiamate alla funzione MiniportTcpOffloadSend . Il driver può quindi passare tale elenco collegato in una singola chiamata alla funzione NdisTcpOffloadSendComplete .

Prima di completare una o più richieste di invio, la destinazione di offload deve eseguire le operazioni seguenti per ogni struttura NET_BUFFER_LIST che passa alla funzione NdisTcpOffloadSendComplete :

  • Scrivere un valore di stato nel membro Status :
    • NDIS_STATUS_SUCCESS indica che tutti i dati associati al NET_BUFFER_LIST sono stati inviati correttamente dalla destinazione di offload e che la destinazione di offload ricevuta dall'host remoto ha ricevuto un riconoscimento per tutti i dati trasmessi. Si noti che questo comportamento è diverso dalla funzione di trasmissione non offload, MiniportSendNetBufferLists, che non monitora i riconoscimenti.
    • Valore di stato diverso da NDIS_STATUS_SUCCESS, ad esempio un valore di stato di NDIS_STATUS_REQUEST_ABORTED o NDIS_STATUS_UPLOAD_IN_PROGRESS, indica che i dati di invio non sono stati riconosciuti correttamente. La destinazione di offload potrebbe o non aver inviato i dati. La destinazione di offload deve non riuscire l'operazione di invio per tutte le strutture di NET_BUFFER_LIST successive nell'elenco collegato senza inviare altri dati associati a queste strutture. La destinazione di offload scrive un valore di stato di NDIS_STATUS_UPLOAD_IN_PROGRESS quando viene terminato l'offload della connessione TCP in cui devono essere inviati i dati. In questo caso, lo stack host accoda ed elabora i dati TCP. La destinazione di offload scrive un valore di stato di NDIS_STATUS_REQUEST_ABORTED se ha ricevuto un segmento RST sulla connessione TCP in cui inviare i dati. In questo caso, lo stack host non elabora i dati TCP.
    • La destinazione di offload deve completare un invio parziale per, al massimo, una struttura NET_BUFFER_LIST nell'elenco collegato. La destinazione di offload scrive un valore di stato diverso da NDIS_STATUS_SUCCESS, ad esempio un valore di stato di NDIS_STATUS_ABORTED o NDIS_STATUS_UPLOAD_IN_PROGRESS in una struttura di NET_BUFFER_LIST di questo tipo.
    • Se un driver intermedio non può allocare memoria per propagare l'operazione di invio a una destinazione di offload sottostante, scrive un valore di stato di NDIS_STATUS_REQUEST_UPLOAD nella prima struttura NET_BUFFER_LIST nell'elenco collegato e NDIS_STATUS_UPLOAD_REQUESTED a tutte le strutture di NET_BUFFER_LIST successive nell'elenco collegato. Il driver intermedio non deve propagare le strutture NET_BUFFER_LIST a una destinazione di offload sottostante. Lo stack host eseguirà l'operazione di invio.
  • Specificare il numero di byte di dati inviati. La destinazione di offload esegue questa operazione chiamando la macro NET_BUFFER_LIST_INFO con idTcpOffloadBytesTransferred.
  • Chiamare il Funzione NdisAdvanceNetBufferDataStart per ogni struttura NET_BUFFER associata alla struttura NET_BUFFER_LIST. Il parametro NetBuffer passato alla funzione NdisAdvanceNetBufferDataStart deve puntare alla struttura NET_BUFFER. Il parametro DataOffsetDelta deve specificare il numero di byte di dati della struttura NET_BUFFER trasmessi dalla destinazione di offload e riconosciuti dall'host remoto. Il parametro FreeMdl è NULL.

Requisiti

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

Vedi anche

MiniportSendNetBufferLists

MiniportTcpOffloadSend

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver