NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur (ndischimney.h)
[Das TCP-Schornsteinauslagerungsfeature ist veraltet und sollte nicht verwendet werden.]
Die NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur ist der grundlegende Baustein einer TCP-Schornsteinabladezustandsstruktur. Eine Auslagerungszustandsstruktur 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;
Member
Header
Der Header der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur. Der Header 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 Auslagerungszustands, 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 des Headers, in Bytes.
Der Type-Member der NDIS_OBJECT_HEADER-Struktur gibt den Typ des Auslagerungszustands und implizit die spezifische Struktur (oder Strukturen) des Offloadzustands an, die unmittelbar der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur im Arbeitsspeicher folgen.
Die folgenden OFFLOAD_STATE_TYPE Werte werden unterstützt:
NeighborOffloadConstState
Gibt den konstanten Nachbarstatus an. Dieser Zustand ist als formatiert. NEIGHBOR_OFFLOAD_STATE_CONST Struktur.
NeighborOffloadCachedState
Gibt den zwischengespeicherten Nachbarstatus an. Dieser Zustand ist als formatiert. NEIGHBOR_OFFLOAD_STATE_CACHED Struktur.
NeighborOffloadDelegatedState
Gibt den delegierten Nachbarstatus an. Dieser Zustand ist als formatiert. NEIGHBOR_OFFLOAD_STATE_DELEGATED Struktur.
NeighborOffloadState
Gibt alle Nachbarstatusinformationen an, einschließlich konstanter, zwischengespeicherter und delegierter Nachbarstatus. Dieser Zustand wird 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 konstanten Pfadstatus (IPv4) an. Dieser Zustand ist als formatiert. PATH_OFFLOAD_STATE_CONST Struktur.
Ip4OffloadCachedState
Gibt den zwischengespeicherten Pfadstatus (IPv4) an. Dieser Zustand ist als formatiert. PATH_OFFLOAD_STATE_CACHED Struktur.
Ip4OffloadDelegatedState
Gibt den Delegierten Pfadstatus (IPv4) an. Dieser Zustand ist als formatiert. PATH_OFFLOAD_STATE_DELEGATED Struktur. Derzeit ist kein delegierter Pfadzustand vorhanden. Die PATH_OFFLOAD_STATE_DELEGATED-Struktur enthält keine Variablen.
Ip4OffloadState
Gibt den gesamten Pfadstatus (IPv4) an, einschließlich der Konstanten, des zwischengespeicherten und des delegierten Pfadzustands. Dieser Zustand wird 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 konstanten Pfadstatus (IPv6) an. Dieser Zustand ist als PATH_OFFLOAD_STATE_CONST-Struktur formatiert.
Ip6OffloadCachedState
Gibt den zwischengespeicherten Pfadstatus (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, des zwischengespeicherten und des delegierten Pfadzustands. Dieser Zustand wird 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 formatiert. TCP_OFFLOAD_STATE_CONST Struktur.
TcpOffloadCachedState
Gibt den zwischengespeicherten TCP-Zustand an. Dieser Zustand ist als formatiert. TCP_OFFLOAD_STATE_CACHED Struktur.
TcpOffloadDelegatedState
Gibt den delegierten TCP-Zustand an. Dieser Zustand ist als formatiert. 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, des zwischengespeicherten und des delegierten TCP-Zustands. Dieser Zustand wird 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 Auslagerungszustandsschicht (Nachbar, Pfad oder TCP), die vom Typmember des Headerelements angegeben wird. NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Strukturen, die über NextBlock-Zeiger verknüpft sind, befinden sich immer auf derselben Ebene des Auslagerungszustands. Der NextBlock-WertNULL gibt an, dass auf dieser Ebene keine zusätzliche struktur der nächsten NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 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 Auslagerungszustands befindet (eine höhere Ebene in der Abladezustandsstruktur). Für TCP-Schornsteinabladung:
- Das DependentBlockList-Element 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-Element 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-Element einer NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur auf der TCP-Ebene ist immer NULL.
Status
Der Abschluss status eines Auslagerungs-, Abfrageauslagerungs-, Aktualisierungsauslagerungs-, Ungültig- oder Beendigungsabladungsvorgangs, den das Auslagerungsziel für den Zustand ausgeführt hat, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist oder auf den verwiesen wird. Abhängig vom Vorgang schreibt das Auslagerungsziel einen der folgenden NDIS_STATUS Werte in das Status-Element :
NDIS_STATUS_SUCCESS
Auslagerung initiieren: Das Auslagerungsziel hat den Zustand, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, und den Zustand, der allen unmittelbar abhängigen NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Strukturen zugeordnet ist, erfolgreich ausgelagert.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Das Auslagerungsziel hat den Vorgang erfolgreich für den Zustand ausgeführt, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist oder auf den verwiesen wird.
NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS
Auslagerung initiieren: Das Auslagerungsziel hat den Zustand, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, erfolgreich ausgelagert, konnte jedoch den Zustand, der einer oder mehreren der unmittelbar abhängigen NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Strukturen zugeordnet ist, nicht auslagern.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_FAILURE
Auslagerung initiieren: Das Auslagerungsziel konnte nicht den Zustand auslagern, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist. Die Ursache des Fehlers kann nicht kategorisiert werden.
Abfrage, Aktualisierung, Ungültiges Löschen oder Beenden der Auslagerung: Das Auslagerungsziel konnte den Vorgang nicht für den Zustand ausführen, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist oder auf den verwiesen wird.
NDIS_STATUS_RESOURCES
Auslagerung initiieren: Das Auslagerungsziel konnte den Zustand, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, nicht auslagern, da das Auslagerungsziel nicht genügend Hostspeicher zuweisen konnte.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_TCP_ENTRIES
Auslagerung initiieren: Das Auslagerungsziel konnte den der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordneten Zustand nicht auslagern, da das Auslagerungsziel kein TCP-Verbindungsstatusobjekt zuweisen konnte.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_PATH_ENTRIES
Auslagerung initiieren: Das Auslagerungsziel konnte den der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordneten Zustand nicht auslagern, da das Auslagerungsziel kein Pfadstatusobjekt zuweisen konnte.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES
Auslagerung initiieren: Das Auslagerungsziel konnte den der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordneten Zustand nicht auslagern, da das Auslagerungsziel kein benachbartes Zustandsobjekt zuweisen konnte.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES
Initiieren der Auslagerung: Das Auslagerungsziel konnte den der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordneten Zustand nicht ausladen, da der Hoststapel einen DlSourceAddress-Member ohne NULL in der angegeben hat. NEIGHBOR_OFFLOAD_STATE_CONST Struktur, und das Auslagerungsziel unterstützt entweder keine konfigurierbaren MAC-Quelladressen oder kann keine zusätzlichen Quell-MAC-Adressen akzeptieren.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES
Auslagerung initiieren: Das Auslagerungsziel konnte nicht den Zustand auslagern, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, da das Auslagerungsziel keine Datenstruktur für die Quell-IP-Adresse zuweisen konnte, auf die der SourceAddress-Zeiger im PATH_OFFLOAD_STATE_CONST Struktur.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER
Auslagerung initiieren: Das Auslagerungsziel konnte den Zustand, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, nicht auslagern, da das Auslagerungsziel nicht genügend TCP-Übertragungspuffer zuordnen konnte.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER
Auslagerung initiieren: Das Auslagerungsziel konnte nicht den Zustand auslagern, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, da das Auslagerungsziel nicht genügend TCP-Empfangspuffer zuordnen konnte.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW
Initiieren der Auslagerung: Das Auslagerungsziel konnte nicht den Zustand auslagern, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, da das in der angegebene InitialRcvWnd-Member TCP_OFFLOAD_STATE_CACHED Struktur größer ist, als das Auslagerungsziel unterstützen kann.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_VLAN_ENTRIES
Auslagerung initiieren: Dem Auslagerungsziel sind die Ressourcen für die Nachverfolgung zusätzlicher VLAN-IDs nicht mehr verfügbar.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_VLAN_MISMATCH
Auslagerung initiieren: Die benachbarte VlanId ist ungleich 0 und entspricht keiner der VLAN-IDs der Schnittstelle.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NDIS_STATUS_OFFLOAD_PATH_MTU
Die Pfad-MTU für die TCP-Verbindung ist größer als das Auslagerungsziel unterstützt.
Abfrage, Aktualisierung, Ungültiges Oder Beenden der Auslagerung: Kein zulässiger status Wert.
NdisReserved[2]
Reserviert für die Verwendung durch NDIS.
MiniportOffloadContext
Ein Zeiger auf einen Speicherspeicherort, in den das Auslagerungsziel einen PVOID-Wert schreibt. Der PVOID-Wert verweist auf den Auslagerungskontextbereich, in dem das Auslagerungsziel den Zustand speichert, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist. Wenn der Zustand ein neuer Zustand ist, der vom Auslagerungsziel abgeladen werden soll, enthält der Speicherspeicherort, auf den MiniportOffloadContext verweist, einen NULL-Wert . Nach dem Entladen des Zustands schreibt das Auslagerungsziel einen PVOID-Wert an diesen Speicherspeicherort. Der vom Auslagerungsziel bereitgestellte PVOID-Wert verweist auf den Auslagerungskontextbereich, 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 Struktur des Offloadzustands.
NdisOffloadHandle
Das Handle, das das Auslagerungsziel in nachfolgenden Aufrufen des NdisTcpOffloadEventHandler-Funktion oder die NdisTcpOffloadReceiveHandler-Funktion , wenn Sie einen Hinweis auf den Dieser NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur zugeordneten Auslagerungszustand geben.
ProtocolReserved[2]
Reserviert für die Verwendung durch Protokolltreiber, die diesen Bereich für ihre eigenen Zwecke verwenden können. Auslagerungsziele dürfen diesen Wert nicht ändern.
MiniportReserved[2]
Reserviert für die Verwendung durch Auslagerungsziele, die diesen Bereich für ihre eigenen Zwecke verwenden können, z. B. das Anstehen des Auslagerungszustands, der der NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist.
ImReserved[2]
Reserviert für die Verwendung durch Zwischentreiber, die diesen Bereich für ihre eigenen Zwecke verwenden können. Auslagerungsziele dürfen diesen Wert nicht ändern.
Scratch[2]
Das Auslagerungsziel kann diesen Bereich für die interne Nachverfolgung verwenden. Die Informationen in diesem Bereich sind nur gültig, während das Auslagerungsziel den Besitz des NDIS_MINIPORT_OFFLOAD_BLOCK_LIST hat.
SourceHandle
Dieses Element ist für ein Auslagerungsziel nicht von Bedeutung. Ein Auslagerungsziel darf diesen Member nicht ändern.
PortNumber
Eine Portnummer, die einen Miniportadapterportport identifiziert. Um eine Miniportadapterportnummer zuzuweisen, rufen Sie die Funktion NdisMAllocatePort auf. Ein Nullwert gibt den Standardport eines Miniportadapters an. 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 Auslagerungsziel ignoriert werden.
Wenn der Hoststapel einen Wert ohne NULL 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 wird einer Kette von Speicherdeskriptorlisten (MDLs) zugeordnet. Die NET_BUFFER_LIST und zugeordneten Strukturen sind gesperrt, sodass sie sich im physischen Speicher befinden. Sie werden jedoch nicht dem Systemspeicher zugeordnet.
Die mdLs, die dem NET_BUFFER-Strukturen zugeordnet sind, enthalten Daten, die der Hoststapel im Rahmen des Auslagerungsvorgangs an das Auslagerungsziel übergibt. Das Auslagerungsziel schließt diese Daten asynchron zurück in den Hoststapel, 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 von ausstehenden Sendedaten während und nach einem Auslagerungsvorgang.
Ein Auslagerungsziel kann ausstehende Sendedaten an den Hoststapel übergeben, wenn die Auslagerung einer TCP-Verbindung beendet wird. In diesem Fall gibt das Auslagerungsziel beim Aufrufen des -Elements einen Wert ungleich NULL für das NetBufferListChain-Element an. NdisMTerminateOffloadComplete-Funktion . Wenn das Auslagerungsziel keine Sendedaten für eine TCP-Verbindung übergibt, die beendet wird, muss es einen NULL-Wert für das NetBufferListChain-Element angeben.
Hinweise
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Strukturen können miteinander verknüpft werden, um das Framework einer TCP-Schornsteinablagestruktur zu erstellen.
Über NDIS übergibt der Hoststapel einen OffloadBlockList-Zeiger , der auf eine Abladezustandsstruktur auf eine der folgenden Funktionen eines Auslagerungsziels verweist:
- NdisMInitiateOffloadComplete
- NdisMQueryOffloadStateComplete
- NdisMInvalidateOffloadComplete
- NdisMTerminateOffloadComplete
Der Hoststapel und das Auslagerungsziel verwenden die *MiniportOffloadContext - und NdisOffloadHandle-Member einer NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur, um auf den zustand ausgeladenen Zustand zu verweisen. Weitere Informationen finden Sie unter Speichern und Verweisen auf den ausgeladenen Zustand.
Eine NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur kann eine von mehreren Funktionen in einer Auslagerungszustandsstruktur ausführen. Er kann als Platzhalter, Linker oder als neuer Zustand fungieren, der vom Auslagerungsziel abgeladen werden soll. Weitere Informationen finden Sie unter Platzhalter, Linker und Neue Auslagerungen.
Bevor ein Vorgang zum Initiieren einer Auslagerung, Abfrageauslagerung, Aktualisierungsauslagerung, Ungültigkeit der Auslagerung oder Beendigung der Auslagerung abgeschlossen wird, muss ein Auslagerungsziel die Abschluss-status in den Status-Member jeder NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur in der Zustandsstruktur schreiben.
Anforderungen
Anforderung | Wert |
---|---|
Header | ndischimney.h (include Ndischimney.h) |