Freigeben über


NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur (ndischimney.h)

[Das TCP-Schornsteinauslagerungsfeature 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;

Member

Header

Der Header der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur. Der Header 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 Auslagerungszustands, 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 des Headers, in Bytes.

Der Type-Member der NDIS_OBJECT_HEADER-Struktur gibt den Typ des Auslagerungszustands und implizit die spezifische Abladezustandsstruktur (oder Strukturen) an, die unmittelbar der NDIS_PROTOCOL_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 den gesamten Nachbarstatus an, einschließlich der Konstanten, des zwischengespeicherten und des delegierten 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 den gesamten Pfadstatus (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 den gesamten TCP-Status 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_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur auf der Auslagerungszustandsschicht (Nachbar, Pfad oder TCP), die durch den Type-Member des Header-Elements angegeben wird. NDIS_PROTOCOL_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 des nächsten NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 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 Auslagerungszustands befindet (eine höhere Ebene in der Abladezustandsstruktur).

Für TCP-Schornsteinabladung:

Der DependentBlockList-Member 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-Element 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-Element einer NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur auf der TCP-Ebene ist immer NULL.

Der DependentBlockList-WertNULL gibt an, dass keine abhängige NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur vorhanden ist.

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_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist oder auf den verwiesen wird. Abhängig vom Vorgang schreibt NDIS einen der folgenden NDIS_STATUS Werte in das Status-Element :

NDIS_STATUS_SUCCESS

Auslagerung initiieren: Das zugrunde liegende Auslagerungsziel hat den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, und den Zustand, der allen unmittelbar abhängigen PROTOCOL_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_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist oder auf den verwiesen wird.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Auslagerung initiieren: Das zugrunde liegende Auslagerungsziel hat den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, erfolgreich ausgelagert, konnte jedoch den Zustand, der einer oder mehreren der unmittelbar abhängigen NDIS_PROTOCOL_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 zugrunde liegende Auslagerungsziel konnte den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, nicht auslagern. Die Ursache des Fehlers kann nicht kategorisiert werden.

Abfrage, Aktualisierung, Ungültiges Abladen oder Beenden der Auslagerung: Das Auslagerungsziel konnte den Vorgang nicht für den Zustand ausführen, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur zugeordnet ist oder auf den verwiesen wird.

NDIS_STATUS_RESOURCES

Auslagerung initiieren: Das Auslagerungsziel konnte nicht den Zustand auslagern, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, 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_PROTOCOL_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_PROTOCOL_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_PROTOCOL_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 Abladung: Das Auslagerungsziel konnte den der NDIS_PROTOCOL_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 den der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordneten Zustand nicht ausladen, 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 nicht den Zustand auslagern, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, da das Auslagerungsziel nicht genügend TCP-Übertragungspuffer zuweisen 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 den Zustand, der der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, nicht auslagern, da das Auslagerungsziel nicht genügend TCP-Empfangspuffer zuweisen 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_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur zugeordnet ist, da das initialRcvWnd-Element im angegeben ist. 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 nonzero 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

Auslagerung initiieren: 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[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 ihre eigenen Zwecke verwenden können.

MiniportReserved[2]

Reserviert für die Verwendung durch Auslagern von Zielen oder dem Miniportteil eines Zwischentreibers.

ImReserved[2]

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

Scratch[2]

Der Protokolltreiber oder zwischengeschaltete Treiber kann diesen Bereich für die interne Nachverfolgung verwenden. Die Informationen in diesem Bereich sind nur gültig, solange der Fahrer das Eigentum des NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS T.

SourceHandle

Dieser Member ist für ein Protokoll oder einen Zwischentreiber nicht von Bedeutung. Ein Protokoll- oder Zwischentreiber darf diesen Member nicht ändern.

Bei der Weitergabe des Abschlusses eines Vorgangs zur Zustandsbearbeitung kopiert ein Zwischentreiber die
SourceHandle , das in seinem Chataufrufeintrag für das SourceHandle-Element des NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur, die an die NdisMXxxComplete-Funktion übergeben wird.

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 Protokoll- oder Zwischentreiber einen NULL-Wert angibt, ist NetBufferListChain nicht signifikant und kann vom zugrunde liegenden Treiber oder Ziel ignoriert werden.

Wenn ein Protokoll oder Zwischentreiber 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 dieser 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 im Rahmen eines Vorgangs zur Zustandsbearbeitung oder beim Abschluss eines solchen Vorgangs übermittelt 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 Auslagerungsvorgang.

Ein Auslagerungsziel- 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 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, gibt es einen NULL-Wert für das NetBufferListChain-Element an.

Hinweise

Ein Zwischentreiber erstellt eine NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur aus einem NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Struktur beim Verteilen eines Vorgangs zur Zustandsbearbeitung. When Bei der Weitergabe des Abschlusses eines solchen Vorgangs verwendet ein Zwischentreiber eine NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur, um eine NDIS_MINIPORT_OFFLOAD_BLOCK_LIST-Struktur zu erstellen.

Einer NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur kann im Arbeitsspeicher sofort eine Auslagerungszustandsstruktur folgen, die den zustand enthält, der ausgeladen, abgefragt, aktualisiert, ungültig oder beendet werden soll. Das Type-Element des Headers der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST-Struktur gibt den Typ des Auslagerungszustands und implizit die spezifische Auslagerungszustandsstruktur (oder Strukturen) an, die der NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Struktur im Arbeitsspeicher folgen.

Anforderungen

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

Weitere Informationen

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 ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED