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 |