NDIS_TCP_OFFLOAD_SEND_COMPLETE Rückruffunktion (ndischimney.h)
[Das TCP-Schornstein-Offload-Feature ist veraltet und sollte nicht verwendet werden.]
Ein Offload-Ziel ruft die NdisTcpOffloadSendComplete--Funktion auf, um eine oder mehrere Sendeanforderungen auszuführen, die an den MiniportTcpOffloadSend Funktion des Offload-Ziels vorgenommen wurden.
Syntax
NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;
void NdisTcpOffloadSendComplete(
[in] IN NDIS_HANDLE NdisMiniportHandle,
[in] IN PNET_BUFFER_LIST NetBufferList
)
{...}
Parameter
[in] NdisMiniportHandle
Das Handle, das das Offloadziel in einem vorherigen Aufruf des NdisMRegisterMiniportDriver Funktion.
[in] NetBufferList
Ein Zeiger auf eine NET_BUFFER_LIST Struktur. Diese Struktur kann eine eigenständige Struktur oder die erste Struktur in einer verknüpften Liste von NET_BUFFER_LIST Strukturen sein. Das Offloadziel hat diese Strukturen in einem oder mehreren Aufrufen seiner MiniportTcpOffloadSend Funktion.
Rückgabewert
Nichts
Bemerkungen
Um die Systemleistung zu verbessern, kann ein Offloadziel eine verknüpfte Liste erstellen, die NET_BUFFER_LIST Strukturen aus mehreren Aufrufen der MiniportTcpOffloadSend--Funktion enthält. Der Treiber kann dann eine solche verknüpfte Liste in einem einzigen Aufruf an die NdisTcpOffloadSendComplete-Funktion übergeben.
Bevor Sie eine oder mehrere Sendeanforderungen abschließen, muss das Offloadziel für jede NET_BUFFER_LIST Struktur, die sie an die NdisTcpOffloadSendComplete--Funktion übergibt, folgendes ausführen:
-
Schreiben Sie einen Statuswert in das Status- Mitglied:
- NDIS_STATUS_SUCCESS gibt an, dass alle daten, die dem NET_BUFFER_LIST zugeordnet sind, erfolgreich vom Offloadziel gesendet wurden und dass das vom Remotehost empfangene Offloadziel eine Bestätigung für alle übertragenen Daten darstellt. Beachten Sie, dass sich dies von der Nicht-Offload-Sendefunktion unterscheidet, MiniportSendNetBufferLists, was keine Bestätigungen überwacht.
- Ein anderer Statuswert als NDIS_STATUS_SUCCESS – z. B. ein Statuswert von NDIS_STATUS_REQUEST_ABORTED oder NDIS_STATUS_UPLOAD_IN_PROGRESS – gibt an, dass die Sendedaten nicht erfolgreich bestätigt wurden. Das Offloadziel hat die Daten möglicherweise gesendet oder nicht gesendet. Das Offloadziel sollte den Sendevorgang für alle nachfolgenden NET_BUFFER_LIST Strukturen in der verknüpften Liste fehlschlagen, ohne weitere Daten zu senden, die diesen Strukturen zugeordnet sind. Das Offloadziel schreibt einen Statuswert von NDIS_STATUS_UPLOAD_IN_PROGRESS, wenn das Entladen der TCP-Verbindung, für die die Daten gesendet werden sollen, beendet wird. In diesem Fall werden die Hoststapelwarteschlangen und die TCP-Daten verarbeitet. Das Offloadziel schreibt einen Statuswert von NDIS_STATUS_REQUEST_ABORTED, wenn es ein RST-Segment für die TCP-Verbindung empfangen hat, an die die Daten gesendet werden sollen. In diesem Fall verarbeitet der Hoststapel die TCP-Daten nicht.
- Das Offloadziel sollte ein teilweises Senden abschließen, um höchstens eine NET_BUFFER_LIST Struktur in der verknüpften Liste zu erstellen. Das Offloadziel schreibt einen anderen Statuswert als NDIS_STATUS_SUCCESS - z. B. einen Statuswert von NDIS_STATUS_ABORTED oder NDIS_STATUS_UPLOAD_IN_PROGRESS - in eine solche NET_BUFFER_LIST-Struktur.
- Wenn ein Zwischentreiber den Sendevorgang nicht an ein zugrunde liegendes Offloadziel verteilen kann, schreibt er einen Statuswert von NDIS_STATUS_REQUEST_UPLOAD in die erste NET_BUFFER_LIST Struktur in der verknüpften Liste und NDIS_STATUS_UPLOAD_REQUESTED an alle nachfolgenden NET_BUFFER_LIST Strukturen in der verknüpften Liste. Der Zwischentreiber darf die NET_BUFFER_LIST Strukturen nicht an ein zugrunde liegendes Offloadziel weitergeben. Der Hoststapel führt den Sendevorgang aus.
- Geben Sie die Anzahl der gesendeten Datenbytes an. Das Offload-Ziel führt dies durch Aufrufen des NET_BUFFER_LIST_INFO Makros mit einer ID von TcpOffloadBytesTransferred.
- Rufen Sie die NdisAdvanceNetBufferDataStart--Funktion für jede NET_BUFFER Struktur, die der NET_BUFFER_LIST Struktur zugeordnet ist. Der NetBuffer Parameter, der an die NdisAdvanceNetBufferDataStart-Funktion übergeben wird, sollte auf die NET_BUFFER Struktur verweisen. Der parameter DataOffsetDelta sollte die Anzahl der Datenbytes aus der NET_BUFFER Struktur angeben, die vom Offloadziel übertragen und vom Remotehost bestätigt wurden. Der FreeMdl Parameter ist NULL.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | ndischimney.h (include Ndischimney.h) |
IRQL- | Beliebige Ebene |