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 |