Freigeben über


OID_TCP_TASK_OFFLOAD

Der Hoststapel fragt die OID_TCP_TASK_OFFLOAD OID ab, um die TCP-Auslagerungsfunktionen der NIC eines Miniporttreibers oder eines Auslagerungsziels abzurufen. Nach dem Ermitteln der Auslagerungsfunktionen, die eine NIC oder ein Auslagerungsziel unterstützt, legt der Hoststapel diese OID so fest, dass eine oder mehrere der gemeldeten Funktionen aktiviert werden. Der Hoststapel kann auch alle TCP-Auslagerungsfunktionen einer Netzwerkkarte oder eines Auslagerungsziels deaktivieren, indem OID_TCP_TASK_OFFLOAD festgelegt wird. Nur jeweils ein Protokoll kann die TCP-Auslagerungsfunktionen einer bestimmten NIC aktivieren.

Abfragen von Auslagerungsfunktionen

Wenn der Hoststapel abfragen OID_TCP_TASK_OFFLOAD, wird im InformationBuffer eine NDIS_TASK_OFFLOAD_HEADER-Struktur bereitgestellt. Diese Struktur gibt Folgendes an:

  • Die vom Hoststapel unterstützte Auslagerungsversion.
  • Das Kapselungsformat für Sende- und Empfangspakete, die vom Hoststapel verarbeitet werden.
  • Die Größe des Kapselungsheaders in solchen Paketen.

Mit diesen Informationen kann ein Miniporttreiber oder seine NIC den Anfang des ersten IP-Headers in einem Übertragungspaket finden, was eine Voraussetzung für die Ausführung einer Auslagerungsaufgabe ist. Ein Auslagerungsziel muss das Kapselungsformat kennen, um Empfangspakete verarbeiten zu können. Als Reaktion auf eine Abfrage von OID_TCP_TASK_OFFLOAD gibt ein Miniporttreiber oder ein Auslagerungsziel im InformationBuffer die NDIS_TASK_OFFLOAD_HEADER-Struktur zurück, gefolgt von einer oder mehreren NDIS_TASK_OFFLOAD Strukturen. Jede NDIS_TASK_OFFLOAD-Struktur beschreibt eine Auslagerungsfunktion, die von der NIC des Miniporttreibers oder vom Auslagerungsziel unterstützt wird. Wenn die NIC des Miniporttreibers oder das Auslagerungsziel mehrere Versionen einer bestimmten Auslagerungsfunktion unterstützt, sollte eine NDIS_TASK_OFFLOAD Struktur für jede Version zurückgegeben werden.

Jede NDIS_TASK_OFFLOAD-Struktur verfügt über einen Taskmember , der die bestimmte Auslagerungsfunktion angibt, auf die die Struktur angewendet wird. Jede NDIS_TASK_OFFLOAD-Struktur verfügt außerdem über einen TaskBuffer , der Informationen enthält, die für die angegebene Auslagerungsfunktion relevant sind. Die Informationen im TaskBuffer sind als eine der folgenden Strukturen formatiert:

Hinweis

Wenn ein Zwischentreiber den Inhalt der Pakete ändert, die er an einen zugrunde liegenden Miniporttreiber weiterleitet, sodass TCP-Auslagerungsfunktionen für die Pakete nicht ausgeführt werden können, sollte der Zwischentreiber auf OID_TCP_TASK_OFFLOAD Abfragen mit einem status von NDIS_STATUS_NOT_SUPPORTED reagieren, anstatt die OID-Anforderung an den zugrunde liegenden Miniporttreiber oder -auslagerungsziel zu übergeben.

Aktivieren von Auslagerungsfunktionen

Nach dem Abfragen der Auslagerungsfunktionen einer NIC oder eines Auslagerungsziels aktiviert der Hoststapel eine oder mehrere dieser Funktionen, indem OID_TCP_TASK_OFFLOAD festgelegt wird. Beim Festlegen OID_TCP_TASK_OFFLOAD stellt der Hoststapel im InformationBuffer eine NDIS_TASK_OFFLOAD_HEADER-Struktur bereit, gefolgt sofort von einer NDIS_TASK_OFFLOAD-Struktur für jede Auslagerungsfunktion, die der Hoststapel aktiviert.

Der Task in jeder NDIS_TASK_OFFLOAD-Struktur gibt die Auslagerungsfunktion an, die der Hoststapel aktiviert. Der Hoststapel ermöglicht auch bestimmte Aspekte einer bestimmten Auslagerungsfunktion, indem Elemente der -Struktur im TaskBuffer jeder NDIS_TASK_OFFLOAD-Struktur festgelegt werden.

Ändern der Auslagerungsfunktionen

Um die Auslagerungsfunktionen zu ändern, die für eine NIC oder ein Auslagerungsziel aktiviert sind, legt der Hoststapel OID_TCP_TASK_OFFLOAD fest. Der Miniporttreiber oder das Auslagerungsziel darf nur die Auslagerungsfunktionen aktivieren, die durch den neuesten Satz von OID_TCP_TASK_OFFLOAD angegeben sind. Der Miniporttreiber oder das Auslagerungsziel muss alle anderen Auslagerungsfunktionen deaktivieren. Beachten Sie, dass der Hoststapel vor dem Deaktivieren einer bestimmten TCP-Schornsteinauslagerungsfunktion die Auslagerung aller ausgelagerten TCP-Verbindungen beendet, die diese Funktion verwenden.

Ein Auslagerungsziel kann mithilfe von Anhalte- oder Fortsetzungsauslagerungsanzeigen die gemeldeten TCP-Auslagerungsfunktionen ändern:

  • Ein Auslagerungsziel gibt einen Anhaltehinweis aus, indem die NdisMIndicateStatusEx-Funktion aufgerufen wird, wobei das NDIS_STATUS_INDICATION-StatusCode-Member> auf NDIS_STATUS_OFFLOAD_PAUSE festgelegt ist.
  • Ein Auslagerungsziel gibt eine Fortsetzungsanzeige durch Aufrufen der NdisMIndicateStatusEx-Funktion mit dem NDIS_STATUS_INDICATION-StatusCode-Member> auf NDIS_STATUS_OFFLOAD_RESUME.

Nachdem ein Auslagerungsziel den Hoststapel aufgefordert hat, die Auslagerung von Zustandsobjekten fortzusetzen, OID_TCP_TASK_OFFLOAD der Hoststapel erneut ab, um die überarbeiteten TCP-Auslagerungsfunktionen des Auslagerungsziels abzurufen. Weitere Informationen finden Sie unter NDIS_STATUS_OFFLOAD_RESUME.

Deaktivieren von Auslagerungsfunktionen

Um alle Von einer NIC oder einem Auslagerungsziel unterstützten Auslagerungsfunktionen zu deaktivieren, legt der Hoststapel OID_TCP_TASK_OFFLOAD fest. Im InformationBuffer stellt der Hoststapel eine NDIS_TASK_OFFLOAD_HEADER-Struktur bereit, wobei der OffsetFirstTask-Member dieser Struktur auf Null festgelegt ist.

Anforderungen

Version: Windows Vista und höher Header: Ntddndis.h (include Ndis.h)