NdisMTerminateOffloadComplete-Funktion (ndischimney.h)

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

Ein Auslagerungsziel ruft die NdisMTerminateOffloadComplete-Funktion auf, um einen Beendigungsabladungsvorgang abzuschließen, der durch einen vorherigen Aufruf von initiiert wurde. MiniportTerminateOffload-Funktion des Auslagerungsziels.

Syntax

void NdisMTerminateOffloadComplete(
  [in] IN NDIS_HANDLE                       NdisMiniportHandle,
  [in] IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
);

Parameter

[in] NdisMiniportHandle

Das Handle, das das Auslagerungsziel in einem vorherigen Aufruf von erhalten hat. NdisMRegisterMiniportDriver.

[in] OffloadBlockList

Ein Zeiger auf eine NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur. Das Auslagerungsziel hat diesen Zeiger als Eingabeparameter auf seine MiniportTerminateOffload-Funktion .

Rückgabewert

Keine

Bemerkungen

Vor dem Aufrufen der NdisMTerminateOffloadComplete-Funktion muss das Auslagerungsziel einen der folgenden NDIS_STATUS Werte in den Status-Member jeder NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur in der Zustandsstruktur schreiben:

  • NDIS_STATUS_SUCCESS

    Das Auslagerungsziel hat die Auslagerung des Zustandsobjekts erfolgreich beendet, auf das von der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur verwiesen wird. Wenn auf die NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur eine delegierte Zustandsstruktur (XXX_OFFLOAD_STATE_DELEGATED folgt, hat das Auslagerungsziel die delegierten Variablenwerte für dieses Zustandsobjekt erfolgreich in die delegierte Zustandsstruktur geschrieben.

  • NDIS_STATUS_FAILURE

    Der Beendigungsvorgang war nicht erfolgreich. Ein solcher Fehler wird durch einen schwerwiegenden Fehler verursacht, der zum Verlust des Zustandsobjekts führte, das beendet werden sollte. In diesem Fall reagiert die Auslagerungszielhardware möglicherweise nicht. Möglicherweise muss der Hoststapel die Verbindung abbrechen.

Vor dem Aufrufen der NdisMTerminateOffloadComplete-Funktion muss das Auslagerungsziel auch: Wenn ausstehende Sendedaten für eine tcp-Verbindung vorhanden sind, die beendet wird, entlädt das Ziel solche Daten in Netzpuffern und übergibt die gepackten Daten an den Hoststapel in einer verknüpften Liste von NET_BUFFER_LIST Strukturen. In diesem Fall gibt das Auslagerungsziel einen Wert ungleich NULL für den NetBufferListChain-Member der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur für diese Verbindung an. (Die NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur befindet sich in der verknüpften Liste, auf die der OffloadBlockList-Zeiger verweist.) Das NetBufferListChain-Element verweist auf die verknüpfte Liste der NET_BUFFER_LIST Strukturen, denen die Sendedaten zugeordnet sind.

Bei der Übergabe ausstehender Sendedaten an den Hoststapel muss das Auslagerungsziel auch Werte ohne NULL für die folgenden delegierten TCP-Variablen für die verbindung angeben, die beendet wird:

  • SndUna
  • SndNxt
  • SndMax
Weitere Informationen zum Übergeben ausstehender Sendedaten finden Sie unter Behandeln ausstehender Sendedaten während und nach einem Auslagerungsvorgang.

Wenn keine ausstehenden Sendedaten für eine tcp-Verbindung vorhanden sind, die beendet wird, muss das Auslagerungsziel einen NULL-Wert für das NetBufferListChain-Element angeben.

Möglicherweise gibt es ausstehende Empfangsdaten für eine TCP-Verbindung, die hochgeladen wird. Dies sind Daten, die das Auslagerungsziel von der Leitung empfangen, verarbeitet und bestätigt hat. Weitere Informationen zur Verarbeitung solcher Daten finden Sie unter Behandeln von gepufferten Empfangsdaten während eines Beendigungsabladungsvorgangs.

Das Auslagerungsziel gibt alle Ressourcen frei, z. B. Arbeitsspeicher, die den beendeten Zustandsobjekten zugeordnet sind.

Anforderungen

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

Weitere Informationen

MiniportTerminateOffload

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

NdisMRegisterMiniportDriver

TCP_OFFLOAD_STATE_DELEGATED