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