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.
- 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.
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 |