Freigeben über


W_TCP_OFFLOAD_SEND_HANDLER Rückruffunktion (ndischimney.h)

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

NDIS ruft die MiniportTcpOffloadSend--Funktion auf, um Daten über eine entladene TCP-Verbindung zu übertragen.

Syntax

W_TCP_OFFLOAD_SEND_HANDLER WTcpOffloadSendHandler;

NDIS_STATUS WTcpOffloadSendHandler(
  [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. Das Offload-Ziel hat dieses Handle beim Aufrufen an 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, an die die Daten übertragen werden sollen. 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 Liste der NET_BUFFER Strukturen. Jede NET_BUFFER Struktur in der Liste ist einer Kette von Speicherdeskriptorlisten (MDLs) zugeordnet. Die MDLs enthalten die zu übertragenden Daten. 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 schließt immer eine Sendeanforderung asynchron durch Aufrufen ab. NdisTcpOffloadSendComplete.

Bemerkungen

Ein Offloadziel muss Daten zuerst in fiFO-Reihenfolge (First Out) übertragen. Die Reihenfolge der verknüpften Liste der NET_BUFFER_LIST Strukturen, die NDIS an NetBufferList- übergibt, stellt die Reihenfolge dar, in der das Offloadziel die Netzwerkdaten übertragen muss. Darüber hinaus sollte ein Offloadziel die Daten senden, die sie von mehreren Aufrufen an die MiniportTcpOffloadSend in der Reihenfolge senden, in der die Daten gepostet wurden.

Ein Offloadziel muss alle Sendenanforderungen an seine MiniportTcpOffloadSend--Funktion akzeptieren. Wenn ein Offloadziel eine Sendeanforderung nicht sofort abschließen kann, muss das Offloadziel die Anforderung in die Warteschlange stellen, bis sie abgeschlossen werden kann. Das Offloadziel sollte das MiniportReserved- Mitglied einer NET_BUFFER_LIST Struktur verwenden, um Sendeanforderungen in die Warteschlange zu stellen. Während eine Sendeanforderung aussteht, behält das Offloadziel den Besitz der NET_BUFFER_LIST Strukturen und aller Ressourcen, die den NET_BUFFER_LIST Strukturen zugeordnet sind.

Der Hoststapel serialisiert Sendeanforderungen pro Verbindung. Der Stapel stellt keine Sendeanforderung für eine Verbindung aus, während eine andere Sendeanforderung für diese Verbindung ausgeführt wird. Dadurch wird sichergestellt, dass das Offloadziel immer die Sendeanforderungen in der richtigen Reihenfolge empfängt.

Beachten Sie jedoch, dass der Hoststapel die MiniportTcpOffloadSend--Funktion für eine Verbindung aufrufen kann, bevor das Offloadziel einen oder mehrere vorherige Aufrufe an die MiniportTcpOffloadSend Funktion für dieselbe Verbindung abgeschlossen hat. Beachten Sie auch, dass der Hoststapel die MiniportTcpOffloadSend- Funktion eines Offloadziels für eine Verbindung aufrufen kann, während ein oder mehrere Aufrufe der MiniportTcpOffloadSend--Funktion in einer anderen Verbindung ausgeführt werden.

Die MiniportTcpOffloadSend--Funktion muss den Zugriff auf die internen Warteschlangen von Netzwerkdaten mit den anderen MiniportXxx- funktionen synchronisieren, die auf dieselben Warteschlangen zugreifen. Ein Offloadziel kann Drehsperren verwenden, um den Zugriff auf die Warteschlangen zu synchronisieren.

Das Offloadziel sollte (aber nicht erforderlich) das PSH-Bit für jede NET_BUFFER_LIST Grenze festlegen. Die empfohlene Vorgehensweise besteht darin, das PSH-Bit im letzten Segment festzulegen, das aus den Daten erstellt wurde, die jeder NET_BUFFER_LIST Struktur zugeordnet sind (d. a. die daten, die durch die NET_BUFFER Strukturen beschrieben werden, die der NET_BUFFER_LIST Struktur zugeordnet sind). Alternativ kann das Offloadziel das PSH-Bit im letzten verbleibenden Segment in der Sendewarteschlange festlegen, bevor die Sendewarteschlange geleert wird.

Der Hoststapel fordert das Offload-Ziel nicht an, dringende Daten zu senden.

Anforderungen

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

Siehe auch

MiniportInitializeEx-

NET_BUFFER_LIST

NdisMSetMiniportAttributes

NdisTcpOffloadSendComplete