Freigeben über


W_TCP_OFFLOAD_FORWARD_HANDLER Rückruffunktion (ndischimney.h)

[Das TCP-Schornstein-Offload-Feature ist veraltet und sollte nicht verwendet werden.]

NDIS ruft die MiniportTcpOffloadForward- funktion auf, um nicht erkannte empfangene TCP-Segmente an ein Offload-Ziel weiterzuleiten.

Syntax

W_TCP_OFFLOAD_FORWARD_HANDLER WTcpOffloadForwardHandler;

NDIS_STATUS WTcpOffloadForwardHandler(
  [in] IN NDIS_HANDLE MiniportAdapterContext,
  [in] IN PVOID MiniportOffloadContext,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Parameter

[in] MiniportAdapterContext

Das Handle für einen kontextbezogenen Offload-Zielbereich, in dem das Offloadziel Zustandsinformationen zu dieser Instanz des Adapters verwaltet. Der Miniporttreiber hat diesen Handle bei aufruften NDIS bereitgestellt. von NdisMSetMiniportAttributes MiniportInitializeEx Funktion.

[in] MiniportOffloadContext

Ein Zeiger auf einen Speicherspeicherort, der einen PVOID-Wert enthält. Dieser PVOID-Wert verweist auf den Miniport-Offloadkontext, der das Statusobjekt für die TCP-Verbindung enthält, für die die TCP-Segmente weitergeleitet werden. Das Offload-Ziel hat diesen PVOID-Wert beim Entladen des TCP-Verbindungsstatusobjekts bereitgestellt.

[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. Jede NET_BUFFER_LIST Struktur in der Liste beschreibt eine NET_BUFFER Struktur. Jede NET_BUFFER Struktur ist einer Kette von Speicherdeskriptorlisten (MDLs) zugeordnet. Die mdLs, die einer NET_BUFFER Struktur zugeordnet sind, enthalten ein und nur ein TCP-Segment, das an das Offloadziel weitergeleitet wird. Das erste Byte der ersten MDL ist das erste Byte des TCP-Headers. Die NET_BUFFER_LIST und zugeordneten Strukturen sind gesperrt, sodass sie im physischen Speicher verbleiben. Sie werden jedoch nicht im Systemspeicher zugeordnet.

Rückgabewert

NDIS_STATUS_PENDING ist der einzige zulässige Rückgabewert. Ein Offloadziel führt immer eine Weiterleitungsanforderung asynchron durch Aufrufen der NdisTcpOffloadForwardComplete Funktion.

Bemerkungen

Der Hoststapel leitet ein oder mehrere TCP-Segmente weiter, die er empfangen hat, in den folgenden Situationen jedoch nicht bestätigt:

  • Der Hoststapel hat die Segmente in einer TCP-Verbindung empfangen, die in das Offload-Ziel entladen wurde. Da die Verbindung nicht vollständig entladen wurde, konnte das Offloadziel die TCP-Segmente zu diesem Zeitpunkt nicht verarbeiten.
  • Der Hoststapel befindet sich in einem mehrhomed-System, das die Segmente auf einer anderen Netzwerkschnittstelle als dem empfangen hat, auf dem die TCP-Verbindung entladen wird.
  • Das Offloadziel hat zuvor empfangene Pakete angegeben, für die IP-Optionen festgelegt und/oder Fragmente vorhanden waren, die eine Neuassembling benötigten. Nach der Verarbeitung der IP-Optionen und/oder der erfolgreichen Neuassemierung der Pakete leitet der Hoststapel die TCP-Segmente an das Offloadziel weiter.
Der Hoststapel versucht niemals, TCP-Segmente für eine TCP-Verbindung weiterzuleiten, wenn:
  • Diese Verbindung wird entladen. Der Hoststapel wartet immer auf den Abschluss der Verbindung, bevor pakete für diese Verbindung weitergeleitet werden. Der Hoststapel leitet TCP-Segmente so schnell wie möglich weiter, nachdem die Auslagerung der Verbindung abgeschlossen wurde. Es gibt jedoch keine Frist für die Weiterleitung solcher Segmente.
  • Die Auslagerung dieser Verbindung wird beendet. In diesem Fall puffert der Hoststapel die Daten, bis die Beendigung des Offloads abgeschlossen ist, und verarbeitet dann die Segmente.
Der Hoststapel leitet TCP-Segmente - nicht IP-Datagramme - an ein Offloadziel weiter. Daher ist der einzige Header, den der Hoststapel für jedes Segment bereitstellt, der TCP-Header, einschließlich aller vorhandenen TCP-Optionen. Dies sind alle Kopfzeileninformationen, die das Offloadziel zum Verarbeiten des empfangenen Segments benötigt.

Beim Weiterleiten von TCP-Segmenten überträgt der Hoststapel ein TCP-Segment pro NET_BUFFER Struktur. Der Hoststapel ordnet nur eine NET_BUFFER Struktur und daher ein weitergeleitetes TCP-Segment jeder NET_BUFFER_LIST Struktur in der verknüpften Liste zu.

Der Hoststapel weist die NET_BUFFER_LIST und zugeordneten Strukturen zu, die NDIS an die MiniportTcpOffloadForward-Funktion übergibt. Das Offloadziel besitzt diese Ressourcen, bis sie an die NdisTcpOffloadForwardComplete Funktion. Während sie diese Ressourcen besitzt, kann das Offloadziel sie zur Verarbeitung in die Warteschlange stellen.

Anforderungen

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

Siehe auch

MiniportInitializeEx-

NET_BUFFER_LIST

NdisMSetMiniportAttributes

NdisTcpOffloadForwardComplete-