Freigeben über


NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE Rückruffunktion (ndischimney.h)

[Das TCP-Schornsteinauslagerungsfeature ist veraltet und sollte nicht verwendet werden.]

Ein Auslagerungsziel ruft die NdisTcpOffloadReceiveComplete-Funktion auf, um gesendete Empfangsanforderungen (Empfangspuffer) an den Hoststapel zurückzugeben. Das Auslagerungsziel hat zuvor die Empfangsanforderungen in einem oder mehreren Aufrufen seiner MiniportTcpOffloadReceive-Funktion .

Syntax

NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;

void NdisTcpOffloadReceiveComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Parameter

[in] NdisMiniportHandle

Das Handle, das das Auslagerungsziel bei einem vorherigen Aufruf der NdisMRegisterMiniportDriver-Funktion .

[in] NetBufferList

Ein Zeiger auf eine NET_BUFFER_LIST-Struktur . Diese Struktur kann eigenständig oder die erste Struktur in einer verknüpften Liste von NET_BUFFER_LIST Strukturen sein. Das Auslagerungsziel hat diese Strukturen in einem oder mehreren Aufrufen seiner MiniportTcpOffloadReceive-Funktion .

Rückgabewert

Keine

Bemerkungen

Ein Auslagerungsziel sollte vorab bereitgestellte Empfangsanforderungen in der Reihenfolge verwenden und zurückgeben, in der die Anforderungen an den MiniportTcpOffloadReceive-Funktion des Auslagerungsziels. Das heißt, das Auslagerungsziel sollte preposted receive requests in first in, first out (FIFO) verwenden und zurückgeben.

Ein Auslagerungsziel muss Aufrufe der NdisTcpOffloadReceiveComplete-Funktion und der NdisTcpOffloadReceiveHandler-Funktion pro Verbindung.

Die MiniportTcpOffloadReceive-Funktion eines Auslagerungsziels kann im Kontext des Aufrufs der Funktion NdisTcpOffloadReceiveComplete aufgerufen werden. In diesem Fall darf ein Auslagerungsziel die NdisTcpOffloadReceiveComplete-Funktion nicht erneut aufrufen, bis der vorherige Aufruf von NdisTcpOffloadReceiveComplete zurückgegeben wurde.

Um die Systemleistung zu verbessern, kann ein Auslagerungsziel eine verknüpfte Liste erstellen, die die NET_BUFFER_LIST Strukturen aus mehreren Aufrufen der MiniportTcpOffloadReceive-Funktion . Das Auslagerungsziel kann eine solche verknüpfte Liste in einem einzigen Aufruf an die NdisTcpOffloadReceiveComplete-Funktion übergeben. Beachten Sie, dass ein Auslagerungsziel die Empfangsanforderungen verteilen kann, die in einem einzigen Aufruf an die MiniportTcpOffloadReceive-Funktion über mehrere Abschlussaufrufe hinweg, solange das Auslagerungsziel die Empfangsanforderungen in derselben Reihenfolge abschließt, in der sie an die MiniportTcpOffloadReceive-Funktion gesendet wurden.

Vor dem Aufrufen der NdisTcpOffloadReceiveComplete-Funktion führt das Auslagerungsziel für jede NET_BUFFER_LIST Struktur, die an die Funktion übergeben wird, Folgendes aus:

  • Schreibt einen der folgenden status-Werte in das Status-Element:
    NDIS_STATUS_SUCCESS
    Das Auslagerungsziel hat alle Daten empfangen, die den NET_BUFFER_LIST Strukturen zugeordnet sind, auf die vom NetBufferList-Parameter verwiesen wird. Das Auslagerungsziel hat auch die Variablen RcvNxt und RcvWnd im delegierten TCP-Zustand für die TCP-Verbindung erweitert. Das Auslagerungsziel hat möglicherweise eine Bestätigung für die empfangenen Daten generiert, je nachdem, ob das Auslagerungsziel auf das Senden einer verzögerten Bestätigung wartet.
    NDIS_STATUS_REQUEST_ABORTED
    Fehler beim Verarbeiten der empfangenen Daten durch das Auslagerungsziel. Wenn das Auslagerungsziel einige gültige Daten mit den NET_BUFFER_LIST Strukturen bereitstellt, auf die der NetBufferList-Parameter verweist, gibt das Auslagerungsziel die Anzahl der gültigen Datenbytes an, indem das makro NET_BUFFER_LIST_INFO aufgerufen wird. Möglicherweise hat das Auslagerungsziel einen Teil der empfangenen Daten bestätigt oder nicht.
    NDIS_STATUS_UPLOAD_IN_PROGRESS
    Die Verbindung, für die der Puffer bereitgestellt wurde, wird hochgeladen.
    NDIS_STATUS_INVALID_STATE
    Die Empfangsanforderung wurde gepostet, nachdem das Auslagerungsziel durch Aufrufen der Verbindung eine Verbindung angegeben hat. NdisTcpOffloadEventHandler.
  • Gibt die Anzahl der Datenbytes an, die durch Aufrufen des NET_BUFFER_LIST_INFO-Makros mit der IDTcpOffloadBytesTransferred zurückgegeben werden.
  • Ruft die NdisAdvanceNetBufferDataStart-Funktion . Der NetBufferList-Parameter sollte auf die NET_BUFFER-Struktur verweisen, die der NET_BUFFER_LIST-Struktur zugeordnet ist. Der Parameter DataOffsetDelta sollte die Anzahl der Datenbytes angeben, die das Auslagerungsziel in die Speicherdeskriptorlisten (MDLs) platziert, die der NET_BUFFER-Struktur zugeordnet sind. Der FreeMdl-Parameter sollte NULL sein.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ndischimney.h (include Ndischimney.h)
IRQL Beliebige Ebene

Weitere Informationen

MiniportTcpOffloadReceive

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver