Zugreifen auf TCP/IP-NET_BUFFER_LIST Informationen

NDIS-Versionen 6.0 und höher stellen TCP/IP-Offload-Out-of-Band-Daten (OOB) im NetBufferListInfo-Member der NET_BUFFER_LIST-Struktur bereit, die eine verknüpfte Liste von NET_BUFFER Strukturen angibt. Das NetBufferListInfo-Element ist ein Array von Werten, die Informationen enthalten, die allen NET_BUFFER Strukturen in der Liste gemeinsam sind.

Verwenden Sie die folgenden Bezeichner mit dem makro NET_BUFFER_LIST_INFO , um die TCP/IP-Offload-OOB-Daten im NetBufferListInfo-Array festzulegen und abzurufen:

TcpIpChecksumNetBufferListInfo
Gibt Prüfsummeninformationen an, die beim Auslagern von Prüfsummentasks aus dem TCP/IP-Protokoll auf einen Miniporttreiber verwendet werden. Wenn Sie TcpIpChecksumNetBufferListInfo angeben, gibt NET_BUFFER_LIST_INFO eine NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO-Struktur (keinen Zeiger auf die Struktur) zurück. Diese Struktur enthält eine Union, mit der auf die Prüfsummeninformationen als einzelner PVOID-Wert oder als Bitfelder zugegriffen werden kann.

IPsecOffloadV1NetBufferListInfo
Gibt IPsec-Auslagerungsinformationen (Internet Protocol Security, Internetprotokollsicherheit) an, die beim Auslagern von IPsec-Aufgaben aus dem TCP/IP-Protokoll an einen Miniporttreiber verwendet werden. Wenn Sie IPsecOffloadV1NetBufferListInfo angeben, gibt NET_BUFFER_LIST_INFO eine NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO-Struktur zurück.

TcpLargeSendNetBufferListInfo
Gibt Informationen an, die beim Auslagern der Segmentierung eines großen TCP-Pakets aus dem TCP/IP-Protokoll in einen Miniporttreiber verwendet werden. Wenn Sie TcpLargeSendNetBufferListInfo angeben, gibt NET_BUFFER_LIST_INFO eine NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO-Struktur (keinen Zeiger auf die -Struktur) zurück. Diese Struktur enthält eine Union, mit der auf die Informationen als einzelner PVOID-Wert oder als Bitfelder zugegriffen werden kann.

Ieee8021QNetBufferListInfo
Gibt 802.1Q-Informationen zu einem Paket an. Wenn Sie Ieee8021QNetBufferListInfo angeben, gibt NET_BUFFER_LIST_INFO den Value-Member einer NDIS_NET_BUFFER_LIST_8021Q_INFO-Struktur zurück. Diese Struktur kann 802.1p-Prioritäts- und VLAN-Bezeichnerinformationen (Virtual LAN) angeben. 802.1p-Prioritätsinformationen werden verwendet, um die Paketpriorität in Shared Media 802-Netzwerken festzulegen.

Wenn ein Miniporttreiber Unterstützung für die NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB Kapselung meldet, muss er die Ieee8021QNetBufferListInfo-Daten in große Send-Offload-Version 1 (LSOV1) und große Send-Offload Version 2 (LSOV2) Ethernet-Pakete einfügen.

TcpOffloadBytesTransferred
Gibt die Anzahl der Datenbytes an, die in einem TCP-Schornsteinabladungsvorgang übertragen wurden, der gesendet, empfangen oder getrennt wird.

TcpReceiveNoPush
Gibt einen booleschen Wert an, der den Pushmodus einer TCP-Schornsteinabladungsanforderung darstellt. True gibt an, dass sich die Empfangsanforderung im Nicht-Push-Modus befindet. Andernfalls befindet sich die Empfangsanforderung im Pushmodus.

Für LSOV1-, LSOV2-, Prüfsummen- und IPsec-Auslagerungstypen führt ein Miniporttreiber eine Aufgabenauslagerung basierend auf dem Typ der OOB-Daten und den gemeldeten Auslagerungsfunktionen durch. Wenn ein Protokolltreiber beispielsweise LSOV1-Dienste für ein IPv4-Paket erfordert, enthält jede Vom Protokolltreiber bereitgestellte Sendeanforderung die Informationen vom LsoV1Transmit-Member in den NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO OOB-Daten. Beachten Sie, dass der Protokolltreiber überprüfen muss, ob der Miniporttreiber IPv4 mit dem angegebenen Kapselungstyp unterstützt, bevor die Sendeanforderung gestellt wird.

Die NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO-Struktur enthält die maximale Segmentgröße (Maximum Segment Size, MSS). Das TcpHeaderOffset-Element gibt den Speicherort des TCP-Headers an, sodass der Miniporttreiber ip-Header, IP-Optionen oder IP-Erweiterungsheader nicht analysieren muss.

Ein Miniporttreiber mit NDIS 6.0 und höher, der LSOV2 und LSOV1 unterstützt, muss das Type-Element von NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO überprüfen, um festzustellen, ob der Treiberstapel LSOV2 oder LSOV1 verwendet und die entsprechende Auslagerung durchführen muss.

Für LSOv1 schreibt der Treiber, bevor ein Miniporttreiber das Senden eines großen TCP-Pakets abschließt, das er mithilfe von LSO in kleinere Pakete segmentiert hat, die Anzahl der TCP-Nutzlastbytes, die er in den segmentierten Paketen gesendet hat, im TcpPayload-Element von NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO.

Wenn ein Miniporttreiber das NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q-Flag in seinen Funktionen angibt, kann der Treiber Aufgabenauslagerungsdienste für NET_BUFFER_LIST Strukturen ausführen, die den VLAN-Header in den Pufferdaten enthalten. Im Falle empfangener Daten gibt dieses Flag an, dass der Miniporttreiber die Berechnung der Empfangsprüfsumme durchführt und den VLAN-Header in das Ethernet-Paket eingibt.

Wenn ein Miniporttreiber das NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB-Flag in seinen Funktionen angibt, kann der Treiber NET_BUFFER_LIST Strukturen auslagern, die den VLAN-Header in den Ieee8021QnetBufferListInfo-OOB-Daten enthalten. Im Fall der Auslagerung der Empfangsprüfsumme fügt der Miniport den VLAN-Header in die OOB-Daten von Ieee8021QnetBufferListInfo ein.