NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur (ndischimney.h)
[Das TCP-Schornstein-Offload-Feature ist veraltet und sollte nicht verwendet werden.]
Die NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur ist der grundlegende Baustein eines TCP-Schornstein-Offload-Zustandsbaums. Eine Offload-Zustandsstruktur kann eine oder mehrere NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Strukturen enthalten.
Syntax
typedef struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST {
IN NDIS_OBJECT_HEADER Header;
IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
#endif
OUT NDIS_STATUS Status;
IN PVOID NdisReserved[2];
IN OUT PVOID *MiniportOffloadContext;
IN NDIS_HANDLE NdisOffloadHandle;
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_MINIPORT_OFFLOAD_BLOCK_LIST, *PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
Angehörige
Header
Die Kopfzeile der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur. Die Kopfzeile ist als NDIS_OBJECT_HEADER Struktur formatiert. Die NDIS_OBJECT_HEADER-Struktur enthält die Revisionsnummer der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur, den Typ des Offload-Zustands, der unmittelbar auf die NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur im Arbeitsspeicher folgt, und die Größe der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur, einschließlich der Kopfzeile, in Byte.
Der Type Member der NDIS_OBJECT_HEADER-Struktur gibt den Typ des Offloadzustands an und weist auf die spezifische Offload-Zustandsstruktur (oder Strukturen) hin, die unmittelbar auf die NDIS_MINIPORT_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 alle Nachbarstatusinformationen 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 alle Pfadstatusinformationen (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 alle TCP-Statusinformationen 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_MINIPORT_OFFLOAD_BLOCK_LIST Struktur auf der Offload-Zustandsebene (Benachbarter, Pfad oder TCP), der durch den Type Member des Header Members angegeben ist. NDIS_MINIPORT_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_MINIPORT_OFFLOAD_BLOCK_LIST Struktur vorhanden ist.
_NDIS_MINIPORT_OFFLOAD_BLOCK_LIST
DependentBlockList
Ein Zeiger auf eine NDIS_MINIPORT_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_MINIPORT_OFFLOAD_BLOCK_LIST Struktur auf der Benachbarten Ebene kann nur auf eine NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur auf der Pfadebene verweisen.
- Das DependentBlockList Member einer NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur auf der Pfadebene kann nur auf eine NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur auf der TCP-Ebene verweisen.
- Das DependentBlockList Member einer NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur auf TCP-Ebene ist immer NULL-.
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_MINIPORT_OFFLOAD_BLOCK_LIST Struktur verknüpft ist oder darauf verwiesen wird. Je nach Vorgang schreibt das Offloadziel einen der folgenden NDIS_STATUS Werte in das Status Member:
NDIS_STATUS_SUCCESS
Auslagerung initiieren: Das Offloadziel hat erfolgreich den Zustand aus der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur und dem Zustand, der allen unmittelbar abhängigen NDIS_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_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur verknüpft ist oder darauf verwiesen wird.
NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS
Auslagerung initiieren: Das Offloadziel hat erfolgreich den Zustand aus der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur entladen, konnte den Zustand jedoch nicht entladen, der einem oder mehreren der unmittelbar abhängigen NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Strukturen zugeordnet ist.
Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.
NDIS_STATUS_FAILURE
Auslagerung initiieren: Fehler beim Entladen des Zustands, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist. Die Ursache des Fehlers kann nicht kategorisiert werden.
Abfrage, Aktualisierung, Ungültiges Oder Beenden des Offloads: Das Offload-Ziel konnte den Vorgang nicht für den Zustand ausführen, der mit der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur verknüpft oder referenziert wurde.
NDIS_STATUS_RESOURCES
Auslagerung initiieren: Das Offload-Ziel konnte den Zustand, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, nicht entladen, 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_MINIPORT_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_MINIPORT_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
Auslagerung initiieren: Fehler beim Entladen des Zustands, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, 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
Auslagerung initiieren: Fehler beim Entladen des Zustands, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, da der Hoststapel einen nicht-NULL-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
Auslagerung initiieren: Fehler beim Entladen des Zustands, der der NDIS_MINIPORT_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
Auslagerung initiieren: Das Offload-Ziel konnte den Zustand, der der NDIS_MINIPORT_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
Auslagerung initiieren: Fehler beim Entladen des Zustands, der der NDIS_MINIPORT_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
Auslagerung initiieren: Fehler beim Entladen des Zustands, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist, da das InitialRcvWnd-Element, das im Element angegeben ist, 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 Benachbarte 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
Der Pfad DER MTU für die TCP-Verbindung ist größer als das Offloadziel.
Abfragen, Aktualisieren, Ungültigen oder Beenden des Offloads: Kein zulässiger Statuswert.
NdisReserved[2]
Reserviert für die Verwendung durch NDIS.
MiniportOffloadContext
Ein Zeiger auf einen Speicherspeicherort, in den das Offloadziel einen PVOID-Wert schreibt. Der PVOID-Wert verweist auf den Offloadkontextbereich, in dem das Offloadziel den Zustand speichert, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist. Wenn der Zustand ein neuer Zustand ist, der vom Offload-Ziel entladen werden soll, enthält der Speicherspeicherort, auf den MiniportOffloadContext- verweist, einen NULL- Wert. Nach dem Entladen des Zustands schreibt das Offloadziel einen PVOID-Wert an diesen Speicherort. Der vom Offloadziel bereitgestellte PVOID-Wert verweist auf den Offloadkontextbereich, in den der Zustand entladen wurde. Wenn das MiniportOffloadContext-Element selbst NULL-ist, ist die NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur ein Platzhalter in der Offload-Zustandsstruktur.
NdisOffloadHandle
Das Handle, das vom Zielziel in nachfolgenden Aufrufen der NdisTcpOffloadEventHandler-Funktion oder der NdisTcpOffloadReceiveHandler Funktion, wenn sie einen Hinweis auf den offload-Zustand vornehmen, der dieser NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist.
ProtocolReserved[2]
Reserviert für die Verwendung durch Protokolltreiber, die diesen Bereich für eigene Zwecke verwenden können. Offloadziele dürfen diesen Wert nicht ändern.
MiniportReserved[2]
Reserviert für die Verwendung durch Offloadziele, die diesen Bereich für eigene Zwecke verwenden können, z. B. das Aufwarteschlangen des Offload-Zustands, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist.
ImReserved[2]
Reserviert für die Verwendung durch Zwischentreiber, die diesen Bereich für eigene Zwecke verwenden können. Offloadziele dürfen diesen Wert nicht ändern.
Scratch[2]
Das Offloadziel kann diesen Bereich für die interne Nachverfolgung verwenden. Die Informationen in diesem Bereich sind nur gültig, während das Offloadziel über den Besitz des NDIS_MINIPORT_OFFLOAD_BLOCK_LIST verfügt.
SourceHandle
Dieses Element ist für ein Offloadziel nicht von Bedeutung. Ein Offloadziel darf dieses Element nicht ändern.
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 Hoststapel einen NULL--Wert angibt, ist NetBufferListChain- nicht signifikant und kann vom Offloadziel ignoriert werden.
Wenn der Hoststapel 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 der Hoststapel als Teil des Offloadvorgangs an das Offload-Ziel übergibt. Das Offloadziel schließt diese Daten asynchron zurück an den Hoststapel ab, indem die entsprechende NdisTcpOffloadXxxComplete-Funktion aufgerufen wird. Derzeit kann die verknüpfte Liste nur einen Datentyp enthalten: ausstehende Sendedaten. Weitere Informationen finden Sie unter Behandeln ausstehender Sendedaten während und nach einem Offload-Vorgang.
Ein Offloadziel kann ausstehende Sendedaten an den 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, muss ein NULL- Wert für den NetBufferListChain--Member angegeben werden.
Bemerkungen
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Strukturen können miteinander verknüpft werden, um das Framework eines TCP-Schornsteins Offload-Zustandsstrukturzu erstellen.
Über NDIS übergibt der Hoststapel einen OffloadBlockList- Zeiger, der auf eine Offload-Zustandsstruktur auf eine der folgenden Funktionen eines Offloadziels verweist:
- NdisMInitiateOffloadComplete
- NdisMQueryOffloadStateComplete
- NdisMInvalidateOffloadComplete
- NdisMTerminateOffloadComplete
Der Hoststapel und das Offload-Ziel verwenden die *MiniportOffloadContext und NdisOffloadHandle- Member einer NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur, um auf den offloaded-Zustand zu verweisen. Weitere Informationen finden Sie unter Speichern und Verweisen auf den offloaded State.
Eine NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur kann eine von mehreren Funktionen in einer Offload-Zustandsstruktur ausführen. Sie kann als Platzhalter, Linker oder neuer Zustand übertragen werden, der vom Offloadziel entladen werden soll. Weitere Informationen finden Sie unter Placeholders, Linkers und New Offloads.
Bevor Sie einen Auslagerungs-, Abfrageauslagerungs-, Aktualisierungs-Offload-, ungültigen Offload- oder Auslagerungsvorgang abschließen, muss ein Offload-Ziel den Abschlussstatus in das Status- Mitglied jeder NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur in der Zustandsstruktur schreiben.
Anforderungen
Anforderung | Wert |
---|---|
Header- | ndischimney.h (include Ndischimney.h) |