Freigeben über


NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur (ndischimney.h)

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

Die NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur.

Syntax

typedef struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST {
  IN NDIS_OBJECT_HEADER                Header;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
#endif
  OUT NDIS_STATUS                      Status;
  IN PVOID                             NdisReserved[3];
  IN OUT PNDIS_OFFLOAD_HANDLE          OffloadHandle;
  IN PVOID                             ProtocolReserved[2];
  IN PVOID                             MiniportReserved[2];
  IN PVOID                             ImReserved[2];
  IN PVOID                             Scratch[2];
  IN PVOID                             SourceHandle;
  IN NDIS_PORT_NUMBER                  PortNumber;
  IN OUT PNET_BUFFER_LIST              NetBufferListChain;
} NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, *PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;

Angehörige

Header

Die Kopfzeile der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur. Die Kopfzeile ist als NDIS_OBJECT_HEADER Struktur formatiert. Die NDIS_OBJECT_HEADER-Struktur enthält die Revisionsnummer der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur, den Typ des Offload-Zustands, der unmittelbar auf die NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur im Arbeitsspeicher folgt, und die Größe der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur, einschließlich der Kopfzeile, in Byte.

Der Type Member der NDIS_OBJECT_HEADER-Struktur gibt den Typ des Offload-Zustands und die spezifische Offload-Zustandsstruktur (oder Strukturen) an, die unmittelbar auf die NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur im Arbeitsspeicher folgen.

Die folgenden OFFLOAD_STATE_TYPE Werte werden unterstützt:

NeighborOffloadConstState

Gibt den konstanten Nachbarzustand an. Dieser Zustand ist als ein NEIGHBOR_OFFLOAD_STATE_CONST Struktur.

NeighborOffloadCachedState

Gibt den zwischengespeicherten Nachbarstatus an. Dieser Zustand ist als ein NEIGHBOR_OFFLOAD_STATE_CACHED Struktur.

NeighborOffloadDelegatedState

Gibt den delegierten Nachbarstatus an. Dieser Zustand ist als ein NEIGHBOR_OFFLOAD_STATE_DELEGATED Struktur.

NeighborOffloadState

Gibt den gesamten Nachbarzustand an, einschließlich der Konstanten, zwischengespeicherten und delegierten Benachbarten. Dieser Zustand ist als NEIGHBOR_OFFLOAD_STATE_CONST Struktur formatiert, gefolgt von einer NEIGHBOR_OFFLOAD_STATE_CACHED Struktur, gefolgt von einer NEIGHBOR_OFFLOAD_STATE_DELEGATED Struktur.

Ip4OffloadConstState

Gibt den Konstantenpfadstatus (IPv4) an. Dieser Zustand ist als ein PATH_OFFLOAD_STATE_CONST Struktur.

Ip4OffloadCachedState

Gibt den Status des zwischengespeicherten Pfads (IPv4) an. Dieser Zustand ist als ein PATH_OFFLOAD_STATE_CACHED Struktur.

Ip4OffloadDelegatedState

Gibt den delegierten Pfadstatus (IPv4) an. Dieser Zustand ist als ein PATH_OFFLOAD_STATE_DELEGATED Struktur. Derzeit gibt es keinen delegierten Pfadstatus. Die PATH_OFFLOAD_STATE_DELEGATED-Struktur enthält keine Variablen.

Ip4OffloadState

Gibt den gesamten Pfadstatus (IPv4) an, einschließlich der Konstanten, zwischengespeicherten und delegierten Pfadzustände. Dieser Zustand ist als PATH_OFFLOAD_STATE_CONST Struktur formatiert, gefolgt von einer PATH_OFFLOAD_STATE_CACHED Struktur, gefolgt von einer PATH_OFFLOAD_STATE_DELEGATED Struktur.

Ip6OffloadConstState

Gibt den Konstantenpfadstatus (IPv6) an. Dieser Zustand ist als PATH_OFFLOAD_STATE_CONST Struktur formatiert.

Ip6OffloadCachedState

Gibt den Status des zwischengespeicherten Pfads (IPv6) an. Dieser Zustand ist als PATH_OFFLOAD_STATE_CACHED Struktur formatiert.

Ip6OffloadDelegatedState

Gibt den delegierten Pfadstatus (IPv6) an. Dieser Zustand ist als PATH_OFFLOAD_STATE_DELEGATED Struktur formatiert. Derzeit gibt es keinen delegierten Pfadstatus. Die PATH_OFFLOAD_STATE_DELEGATED-Struktur enthält keine Variablen.

Ip6OffloadState

Gibt den gesamten Pfadstatus (IPv6) an, einschließlich der Konstanten, zwischengespeicherten und delegierten Pfadzustände. Dieser Zustand ist als PATH_OFFLOAD_STATE_CONST Struktur formatiert, gefolgt von einer PATH_OFFLOAD_STATE_CACHED Struktur, gefolgt von einer PATH_OFFLOAD_STATE_DELEGATED Struktur.

TcpOffloadConstState

Gibt den konstanten TCP-Zustand an. Dieser Zustand ist als ein TCP_OFFLOAD_STATE_CONST Struktur.

TcpOffloadCachedState

Gibt den zwischengespeicherten TCP-Zustand an. Dieser Zustand ist als ein TCP_OFFLOAD_STATE_CACHED Struktur.

TcpOffloadDelegatedState

Gibt den delegierten TCP-Zustand an. Dieser Zustand ist als ein TCP_OFFLOAD_STATE_DELEGATED Struktur.

TcpOffloadResourceState

Reserviert. Dieser OFFLOAD_STATE_TYPE Wert sowie die TCP_OFFLOAD_RESOURCE_STATE Struktur werden derzeit nicht verwendet.

TcpOffloadState

Gibt den gesamten TCP-Zustand an, einschließlich der Konstanten, zwischengespeicherten und delegierten TCP-Status. Dieser Zustand ist als TCP_OFFLOAD_STATE_CONST Struktur formatiert, gefolgt von einer TCP_OFFLOAD_STATE_CACHED Struktur, gefolgt von einer TCP_OFFLOAD_STATE_DELEGATED Struktur.

FilterReservedOffloadState

Reserviert für Filtertreiber.

NextBlock

Ein Zeiger auf die nächste NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur auf der Offload-Zustandsebene (Benachbarter, Pfad oder TCP), der durch den Type Member des Header Members angegeben ist. NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Strukturen, die über NextBlock- Zeiger verknüpft sind, befinden sich immer auf derselben Ebene des Offloadzustands. Ein NextBlock Wert von NULL gibt an, dass auf dieser Ebene keine zusätzliche NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur vorhanden ist.

_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST

DependentBlockList

Ein Zeiger auf eine NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur, die sich auf einer abhängigen Ebene des Offloadzustands befindet (eine höhere Ebene in der Offload-Zustandsstruktur).

Für TCP-Schornstein offload:

Das DependentBlockList Mitglied einer NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur auf der Benachbarten Ebene kann nur auf eine NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur auf der Pfadebene verweisen. Das DependentBlockList Mitglied einer NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur auf der Pfadebene kann nur auf eine NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur auf der TCP-Ebene verweisen. Das DependentBlockList Mitglied einer NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur auf der TCP-Ebene ist immer NULL-.

Ein DependentBlockList- Wert von NULL gibt an, dass keine abhängige NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur vorhanden ist.

Status

Der Abschlussstatus eines Initiierens von Offload, Abfrageauslagerung, Aktualisieren des Ausladens, Ungültigen Ausladens oder Beenden des Offloadvorgangs, den das offload-Ziel für den Zustand ausgeführt hat, der mit der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur verknüpft oder referenziert wurde. Je nach Vorgang schreibt NDIS einen der folgenden NDIS_STATUS Werte in das Status Member:

NDIS_STATUS_SUCCESS

Auslagerung initiieren: Das zugrunde liegende Offloadziel hat erfolgreich den Zustand aus der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur und dem Zustand, der allen unmittelbar abhängigen PROTOCOL_MINIPORT_OFFLOAD_BLOCK_LIST Strukturen zugeordnet ist, entladen.

Abfrage, Aktualisierung, Ungültige oder Beenden des Offloads: Das Offload-Ziel hat den Vorgang erfolgreich für den Zustand ausgeführt, der mit der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur verknüpft ist oder darauf verwiesen wird.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Auslagerung initiieren: Das zugrunde liegende Offloadziel hat den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, erfolgreich entladen, konnte jedoch den Zustand, der einem oder mehreren der unmittelbar abhängigen NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Strukturen zugeordnet ist, nicht entladen.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_FAILURE

Auslagerung initiieren: Fehler beim Entladen des zugrunde liegenden Offloadziels beim Entladen des Zustands, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist. Die Ursache des Fehlers kann nicht kategorisiert werden.

Abfrage, Aktualisierung, Ungültige oder Beenden des Offloads: Fehler beim Ausführen des Vorgangs für den Zustand, der mit der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur verknüpft ist oder darauf verwiesen wird.

NDIS_STATUS_RESOURCES

Auslagerung initiieren: Fehler beim Entladen des Zustands, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, da das Offloadziel nicht genügend Hostspeicher zuordnen konnte.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

Offload initiieren: Das Offload-Ziel konnte den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, nicht entladen, da das Offloadziel kein TCP-Verbindungsstatusobjekt zuordnen konnte.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

Offload initiieren: Das Offload-Ziel konnte den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, nicht entladen, da das Offloadziel kein Pfadstatusobjekt zuordnen konnte.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

Offload initiieren: Das Offload-Ziel konnte den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, nicht entladen, da das Offloadziel kein Benachbartes Zustandsobjekt zuordnen konnte.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

Offload initiieren: Fehler beim Entladen des Zustands, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, da der Hoststapel einen nichtNULL-DlSourceAddress Member im NEIGHBOR_OFFLOAD_STATE_CONST Struktur und das Offloadziel unterstützt entweder keine konfigurierbaren MAC-Quelladressen oder kann keine zusätzlichen MAC-Quelladressen akzeptieren.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

Offload initiieren: Fehler beim Entladen des Zustands, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, da das Offloadziel keine Datenstruktur für die Quell-IP-Adresse zuordnen konnte, auf die vom SourceAddress Zeiger im PATH_OFFLOAD_STATE_CONST Struktur.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

Offload initiieren: Das Offload-Ziel konnte den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, nicht entladen, da das Offloadziel nicht genügend TCP-Übertragungspuffer zuordnen konnte.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

Offload initiieren: Fehler beim Entladen des Zustands, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, da das Offloadziel nicht genügend TCP-Empfangspuffer zuordnen konnte.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

Offload initiieren: Das Offload-Ziel konnte den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, nicht entladen, da das im InitialRcvWnd angegebene Element im TCP_OFFLOAD_STATE_CACHED Struktur größer ist, als das Offloadziel unterstützt werden kann.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES

Offload initiieren: Das Offload-Ziel hat keine Ressourcen mehr zur Nachverfolgung zusätzlicher VLAN-IDs.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH

Offload initiieren: Der Nachbar-VlanId- ist ungleich Null und stimmt nicht mit einer der VLAN-IDs der Schnittstelle überein.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NDIS_STATUS_OFFLOAD_PATH_MTU

Offload initiieren: Der Pfad MTU für die TCP-Verbindung ist größer als das Offload-Ziel unterstützt.

Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.

NdisReserved[3]

Reserviert für die Verwendung durch NDIS.

OffloadHandle

Ein Zeiger auf eine NDIS_OFFLOAD_HANDLE Struktur. Die NDIS_OFFLOAD_HANDLE-Struktur stellt den Kontext eines Protokoll- oder Zwischentreibers für ein entladenes Zustandsobjekt dar.

ProtocolReserved[2]

Reserviert für die Verwendung durch Protokolltreiber, die diesen Bereich für eigene Zwecke verwenden können.

MiniportReserved[2]

Reserviert für die Verwendung durch Offloadziele oder den Miniportteil eines Zwischentreibers.

ImReserved[2]

Reserviert für die Verwendung durch Zwischentreiber, die diesen Bereich für eigene Zwecke verwenden können.

Scratch[2]

Der Protokolltreiber oder Zwischentreiber kann diesen Bereich für die interne Nachverfolgung verwenden. Die Informationen in diesem Bereich sind nur gültig, während der Fahrer den Besitz der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS T.

SourceHandle

Dieses Element ist für einen Protokoll- oder Zwischentreiber nicht relevant. Ein Protokoll- oder Zwischentreiber darf dieses Element nicht ändern.

Beim Verteilen des Abschlusses eines Zustandsmanipulationsvorgangs kopiert ein Zwischentreiber die
SourceHandle, dass sie in ihrem Chataufrufeintrag im SourceHandle Mitglied des NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur, die an die NdisMXxxComplete-Funktion übergeben wird.

PortNumber

Eine Portnummer, die einen Miniportadapteranschluss identifiziert. Rufen Sie zum Zuweisen einer Miniportadapternummer die funktion NdisMAllocatePort auf. Ein Nullwert identifiziert den Standardport eines Miniportadapters. Verwenden Sie den Standardport, wenn der Miniporttreiber keine Ports für den angegebenen Adapter zugewiesen hat.

NetBufferListChain

Wenn der Protokoll- oder Zwischentreiber einen NULL--Wert angibt, ist NetBufferListChain- nicht signifikant und kann vom zugrunde liegenden Treiber oder Offloadziel ignoriert werden.

Wenn ein Protokoll- oder Zwischentreiber einen nicht-NULL--Wert angibt, verweist NetBufferListChain auf eine NET_BUFFER_LIST Struktur, die eine eigenständige Struktur oder die erste Struktur in einer verknüpften Liste solcher Strukturen sein kann. Jede NET_BUFFER_LIST Struktur in der verknüpften Liste beschreibt eine NET_BUFFER Struktur. Die NET_BUFFER-Struktur ist einer Kette von Speicherdeskriptorlisten (MDLs) zugeordnet. Die NET_BUFFER_LIST und zugeordneten Strukturen sind gesperrt, sodass sie im physischen Speicher verbleiben. Sie werden jedoch nicht im Systemspeicher zugeordnet.

Die MDLs, die den NET_BUFFER Strukturen zugeordnet sind, enthalten Daten, die als Teil eines Zustandsmanipulationsvorgangs oder des Abschlusses eines solchen Vorgangs vermittelt werden. Derzeit kann die verknüpfte Liste nur einen Datentyp enthalten: ausstehende Sendedaten. Weitere Informationen zum Senden von Daten finden Sie unter Behandeln ausstehender Sendedaten während und nach einem Offload-Vorgang.

Ein Offloadziel- oder Zwischentreiber kann ausstehende Sendedaten an den überlagernden Treiber oder Hoststapel übergeben, wenn die Auslagerung einer TCP-Verbindung beendet wird. In diesem Fall gibt das Offload-Ziel beim Aufrufen des NetBufferListChain Members einen wert ungleichNULL an. NdisMTerminateOffloadComplete--Funktion. Wenn das Offloadziel keine Sendedaten für eine beendete TCP-Verbindung übergibt, gibt es einen NULL- Wert für den NetBufferListChain Member an.

Bemerkungen

Ein Zwischentreiber erstellt eine NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur aus einer NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur, wenn einen Zustandsbearbeitungsvorgangweitergeben. Wann den Abschluss eines solchen Vorgangsweitergeben, verwendet ein Zwischentreiber eine NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur, um eine NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zu konstruieren.

Eine NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur kann sofort im Arbeitsspeicher durch eine Offloadzustandsstruktur folgen, die den zu ladenden Zustand (oder das) entladen, abgefragt, aktualisiert, ungültig oder beendet ist. Der Type Member der Header- der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur gibt den Typ des Offloadzustands an und gibt die spezifische Offload-Zustandsstruktur (oder Strukturen) an, die der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur im Arbeitsspeicher folgen.

Anforderungen

Anforderung Wert
Header- ndischimney.h (include Ndischimney.h)

Siehe auch

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_CONST

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisInitiateOffload

NdisInvalidateOffload

NdisMAllocatePort

NdisQueryOffload-

NdisTerminateOffload-

NdisUpdateOffload-

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

ProtocolInitiateOffloadComplete ProtocolInvalidateOffloadComplete ProtocolQueryOffloadComplete ProtocolTerminateOffloadComplete ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED