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) |