Freigeben über


NDIS_UDP_SEGMENTATION_OFFLOAD-Struktur (ntddndis.h)

Die NDIS_UDP_SEGMENTATION_OFFLOAD-Struktur stellt USO-Informationen (UDP Segmentation Offload) in der NDIS_OFFLOAD-Struktur bereit.

Syntax

typedef struct _NDIS_UDP_SEGMENTATION_OFFLOAD {
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount : 6;
    ULONG SubMssFinalSegmentSupported : 1;
#if ...
    ULONG Reserved : 25;
#else
    ULONG Reserved : 26;
#endif
  } IPv4;
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount : 6;
    ULONG SubMssFinalSegmentSupported : 1;
#if ...
    ULONG Reserved1 : 25;
#else
    ULONG Reserved1 : 26;
#endif
    ULONG IpExtensionHeadersSupported : 2;
    ULONG Reserved2 : 30;
  } IPv6;
} NDIS_UDP_SEGMENTATION_OFFLOAD, *PNDIS_UDP_SEGMENTATION_OFFLOAD;

Member

IPv4

Eine Struktur in NDIS_UDP_SEGMENTATION_OFFLOAD , die IPv4-Informationen angibt, die die folgenden Member enthält:

IPv4.Encapsulation

Kapselungseinstellungen für IPv4. Weitere Informationen zu diesem Member finden Sie im folgenden Abschnitt Hinweise.

IPv4.MaxOffLoadSize

Die maximalen Bytes an Benutzerdaten, die der Transport in einem einzelnen Paket an den Miniporttreiber übergeben kann. Der Transport übergibt kein Paket an den Miniporttreiber, das mehr Benutzerdatenbytes enthält, als MaxOffLoadSize angibt. Wenn ein solches Paket übertragen werden muss, segmentiert der Transport selbst das Paket in kleinere Pakete.

IPv4.MinSegmentCount

Die Mindestanzahl von Segmenten, durch die ein großes UDP-Paket teilbar sein muss, bevor der Transport es zur Segmentierung auf die Hardware auslagern kann. Der Transport wird kein großes Paket zur Segmentierung an den Miniporttreiber auslagern, es sei denn, der Miniporttreiber kann mindestens so viele Segmente erstellen, wie MinSegmentCount aus dem Paket angibt. Wenn ein großes UDP-Paket die Mindestsegmentanforderung nicht erfüllt, segmentiert der TCP/IP-Transport das Paket selbst in kleinere Pakete.

IPv4.SubMssFinalSegmentSupported

Ein ULONG-Wert, der angibt, ob alle Segmente, die ein Miniporttreiber von einem großen UDP-Paket ableiten, die gleiche maximale Segmentgröße (MSS) aufweisen müssen oder nicht. Wenn der Miniporttreiber die SubMssFinalSegmentSupported-Funktion nicht festgelegt, muss jedes große UDP-Paket, das vom Transport entladen wird , länge % MSS == 0 aufweisen. Das heißt, das große Paket ist in N-Pakete teilbar, wobei jedes Paketsegment genau MSS-Benutzerbytes enthält. Wenn der Miniporttreiber die SubMssFinalSegmentSupported-Funktion festlegt, gilt diese Bedingung der Paketlängendivisibility für den Transport nicht. Mit anderen Worten, das letzte Segment kann kleiner als MSS sein.

Der Treiber sollte den Wert von SubMssFinalSegmentSupported auf NDIS_OFFLOAD_SUPPORTED festlegen, wenn der Miniport in der Lage ist, UDP-Nachrichten zu segmentieren, wenn die Gesamtlänge des großen Pakets einen Rest ungleich 0 aufweist, wenn er durch MSS geteilt wird. Wenn die Unterstützung des Miniporttreibers über dieses Flag angegeben wird, darf der Protokolltreiber große UDP-Nachrichten ausgeben, wenn die UDP-Nutzlastlänge des endgültigen segmentierten Pakets kleiner als MSS ist.

Weitere Informationen finden Sie unter UDP Segmentation Offload (USO).

IPv4.Reserved

Reserviert. Miniporttreiber dürfen dieses Feld nicht lesen oder in dieses Feld schreiben.

IPv6

Eine Struktur innerhalb NDIS_UDP_SEGMENTATION_OFFLOAD , die IPv6-Informationen angibt, die die folgenden Member enthält:

IPv6.Encapsulation

Kapselungseinstellungen für IPv6. Weitere Informationen zu diesem Member finden Sie im folgenden Abschnitt Hinweise.

IPv6.MaxOffLoadSize

Die maximalen Bytes an Benutzerdaten, die der Transport in einem einzelnen Paket an den Miniporttreiber übergeben kann. Der Transport übergibt kein Paket an den Miniporttreiber, das mehr Benutzerdatenbytes enthält, als MaxOffLoadSize angibt. Wenn ein solches Paket übertragen werden muss, segmentiert der Transport selbst das Paket in kleinere Pakete.

IPv6.MinSegmentCount

Die Mindestanzahl von Segmenten, durch die ein großes UDP-Paket teilbar sein muss, bevor der Transport es zur Segmentierung auf die Hardware auslagern kann. Der Transport wird kein großes Paket zur Segmentierung an den Miniporttreiber auslagern, es sei denn, der Miniporttreiber kann mindestens so viele Segmente erstellen, wie MinSegmentCount aus dem Paket angibt. Wenn ein großes UDP-Paket die Mindestsegmentanforderung nicht erfüllt, segmentiert der TCP/IP-Transport das Paket selbst in kleinere Pakete.

IPv6.SubMssFinalSegmentSupported

Ein ULONG-Wert, der angibt, ob alle Segmente, die ein Miniporttreiber von einem großen UDP-Paket ableiten, die gleiche maximale Segmentgröße (MSS) aufweisen müssen oder nicht. Wenn der Miniporttreiber die SubMssFinalSegmentSupported-Funktion nicht festgelegt, muss jedes große UDP-Paket, das vom Transport entladen wird , länge % MSS == 0 aufweisen. Das heißt, das große Paket ist in N-Pakete teilbar, wobei jedes Paketsegment genau MSS-Benutzerbytes enthält. Wenn der Miniporttreiber die SubMssFinalSegmentSupported-Funktion festlegt, gilt diese Bedingung der Paketlängendivisibility für den Transport nicht. Mit anderen Worten, das letzte Segment kann kleiner als MSS sein.

Der Treiber sollte den Wert von SubMssFinalSegmentSupported auf NDIS_OFFLOAD_SUPPORTED festlegen, wenn der Miniport in der Lage ist, UDP-Nachrichten zu segmentieren, wenn die Gesamtlänge des großen Pakets einen Rest ungleich 0 aufweist, wenn er durch MSS geteilt wird. Wenn die Unterstützung des Miniporttreibers über dieses Flag angegeben wird, darf der Protokolltreiber große UDP-Nachrichten ausgeben, wenn die UDP-Nutzlastlänge des endgültigen segmentierten Pakets kleiner als MSS ist.

Weitere Informationen finden Sie unter UDP Segmentation Offload (USO).

IPv6.Reserved1

Reserviert. Miniporttreiber dürfen dieses Feld nicht lesen oder in dieses Feld schreiben.

IPv6.IpExtensionHeadersSupported

Ein ULONG-Wert, den ein Miniporttreiber festlegt, um anzugeben, dass der Miniportadapter ein großes UDP-Paket segmentieren kann, dessen IP-Header IPv6-Erweiterungsheader enthält.

IPv6.Reserved2

Reserviert. Miniporttreiber dürfen dieses Feld nicht lesen oder in dieses Feld schreiben.

Hinweise

Miniporttreiber sollten die Werte der Felder und Kapselungsanforderungen dieser Struktur ähnlich wie die NDIS_TCP_LARGE_SEND_OFFLOAD_V2-Struktur festlegen.

Die NDIS_UDP_SEGMENTATION_OFFLOAD-Struktur wird im UdpSegmentation-Member der NDIS_OFFLOAD-Struktur verwendet. NDIS_UDP_SEGMENTATION_OFFLOAD gibt aktuelle oder unterstützte Dienste an, die ein Miniportadapter für die Segmentierung großer UDP-Pakete in kleinere Pakete bereitstellt.

NDIS_OFFLOAD wird in der NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES-Struktur, NDIS_BIND_PARAMETERS-Struktur, NDIS_FILTER_ATTACH_PARAMETERS-Struktur, OID_TCP_OFFLOAD_CURRENT_CONFIG OID und der NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status-Angabe verwendet.

Für OID_TCP_OFFLOAD_CURRENT_CONFIG gibt die NDIS_OFFLOAD-Struktur die Aufgabenauslagerungsfunktionen an, die ein Miniportadapter unterstützt. Wenn sich die aktuellen Auslagerungsfunktionen ändern, meldet ein Miniporttreiber die neuen Funktionen in einer NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status Indikation.

Die Encapsulation-Member von NDIS_UDP_SEGMENTATION_OFFLOAD definieren die UDP-Kapselungseinstellungen für den Miniportadapter.

Als Reaktion auf eine OID_TCP_OFFLOAD_CURRENT_CONFIG Abfrageanforderung stellt NDIS in jedem Kapselmember einen bitweisen OR der Kapselflags bereit, die die unterstützten Kapselungseinstellungen angeben. Miniporttreiber müssen Ethernet-Kapselung (NDIS_ENCAPSULATION_IEEE_802_3) bereitstellen. Die anderen Kapselungstypen sind optional.

Für eine NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status Angabe stellt der Miniporttreiber ein bitweises OR der Kapselungsflags bereit, die die aktuellen Funktionen in jedem der Encapsulationsmember angeben.

Die folgenden Flags werden für die Encapsulation-Member definiert:

NDIS_ENCAPSULATION_NOT_SUPPORTED
Gibt an, dass keine Kapselungsauslagerung unterstützt wird.

NDIS_ENCAPSULATION_NULL
Gibt die NULL-Kapselung an.

NDIS_ENCAPSULATION_IEEE_802_3
Gibt die IEEE 802.3-Kapselung an.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
Gibt die IEEE 802.3p- und IEEE 802.3q-Kapselung an.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
Gibt an, dass ieee 802.3p- und IEEE 802.3q-Kapselungseinstellungen im NetBufferListInfo-Member jeder NET_BUFFER_LIST-Struktur angegeben werden.

NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
Gibt die LLC-Kapselung (Logical Link Control) für routingfähige Protokolle an, wie in RFC 1483 beschrieben. Dieses Flag wird auch verwendet, um die Ethernet LLC/SNAP-Kapselung anzugeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1912
Kopfzeile ntddndis.h

Weitere Informationen

UDP Segmentation Offload (USO)