NDIS_UDP_SEGMENTATION_OFFLOAD Struktur (ntddndis.h)
Die NDIS_UDP_SEGMENTATION_OFFLOAD Struktur stellt UDP Segmentation Offload (USO)-Informationen 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;
Angehörige
IPv4
Eine Struktur innerhalb NDIS_UDP_SEGMENTATION_OFFLOAD, die IPv4-Informationen angibt, die die folgenden Member enthalten:
IPv4.Encapsulation
Kapselungseinstellungen für IPv4. Weitere Informationen zu diesem Mitglied finden Sie im folgenden Abschnitt "Hinweise".
IPv4.MaxOffLoadSize
Die maximalen Byte von Benutzerdaten, die der Transport an den Miniporttreiber in einem einzelnen Paket übergeben kann. Der Transport übergibt kein Paket an den Miniporttreiber, der 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 minimale Anzahl von Segmenten, durch die ein großes UDP-Paket divisierbar sein muss, bevor der Transport sie zur Segmentierung in die Hardware entladen kann. Der Transport entlädt ein großes Paket nicht für die Segmentierung an den Miniporttreiber, 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 selbst das Paket in kleinere Pakete.
IPv4.SubMssFinalSegmentSupported
Ein ULONG-Wert, der angibt, ob alle Segmente, die ein Miniporttreiber von einem großen UDP-Paket abgeleitet ist, dieselbe maximale Segmentgröße (MSS) aufweisen muss oder nicht. Wenn der Miniporttreiber die SubMssFinalSegmentSupported-Funktion nicht festgelegt hat, muss jedes große UDP-Paket, das vom Transport geladen wird, Length % MSS == 0aufweisen. Das große Paket ist also in N Pakete mit jedem Paketsegment teilbar, das genau MSS- Benutzerbytes enthält. Wenn der Miniporttreiber die SubMssFinalSegmentSupported--Funktion festlegt, gilt diese Bedingung für die Länge der Paketlänge für den Transport nicht. Das letzte Segment kann also kleiner als MSS-sein.
Der Treiber sollte den Wert von SubMssFinalSegmentSupported auf NDIS_OFFLOAD_SUPPORTED festlegen, wenn der Miniport in der Lage ist, UDP zu segmentieren, wobei die Gesamtlänge des großen Pakets einen Rest ungleich Null aufweist, wenn er durch MSS-geteilt wird. Wenn die Miniporttreiberunterstützung über dieses Flag angegeben wird, kann der Protokolltreiber große UDP-Sendenachrichten ausgeben, bei denen 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 schreiben.
IPv6
Eine Struktur innerhalb NDIS_UDP_SEGMENTATION_OFFLOAD, die IPv6-Informationen angibt, die die folgenden Member enthalten:
IPv6.Encapsulation
Kapselungseinstellungen für IPv6. Weitere Informationen zu diesem Mitglied finden Sie im folgenden Abschnitt "Hinweise".
IPv6.MaxOffLoadSize
Die maximalen Byte von Benutzerdaten, die der Transport an den Miniporttreiber in einem einzelnen Paket übergeben kann. Der Transport übergibt kein Paket an den Miniporttreiber, der 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 minimale Anzahl von Segmenten, durch die ein großes UDP-Paket divisierbar sein muss, bevor der Transport sie zur Segmentierung in die Hardware entladen kann. Der Transport entlädt ein großes Paket nicht für die Segmentierung an den Miniporttreiber, 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 selbst das Paket in kleinere Pakete.
IPv6.SubMssFinalSegmentSupported
Ein ULONG-Wert, der angibt, ob alle Segmente, die ein Miniporttreiber von einem großen UDP-Paket abgeleitet ist, dieselbe maximale Segmentgröße (MSS) aufweisen muss oder nicht. Wenn der Miniporttreiber die SubMssFinalSegmentSupported-Funktion nicht festgelegt hat, muss jedes große UDP-Paket, das vom Transport geladen wird, Length % MSS == 0aufweisen. Das große Paket ist also in N Pakete mit jedem Paketsegment teilbar, das genau MSS- Benutzerbytes enthält. Wenn der Miniporttreiber die SubMssFinalSegmentSupported--Funktion festlegt, gilt diese Bedingung für die Länge der Paketlänge für den Transport nicht. Das letzte Segment kann also kleiner als MSS-sein.
Der Treiber sollte den Wert von SubMssFinalSegmentSupported auf NDIS_OFFLOAD_SUPPORTED festlegen, wenn der Miniport in der Lage ist, UDP zu segmentieren, wobei die Gesamtlänge des großen Pakets einen Rest ungleich Null aufweist, wenn er durch MSS-geteilt wird. Wenn die Miniporttreiberunterstützung über dieses Flag angegeben wird, kann der Protokolltreiber große UDP-Sendenachrichten ausgeben, bei denen 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 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 schreiben.
Bemerkungen
Miniporttreiber sollten die Werte der Felder und Kapselungsanforderungen dieser Struktur entsprechend der 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 die aktuellen oder unterstützten Dienste an, die ein Miniportadapter zum Segmentieren 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 Statusanzeige verwendet.
Für OID_TCP_OFFLOAD_CURRENT_CONFIGgibt die NDIS_OFFLOAD-Struktur die Aufgabenoffloadfunktionen an, die ein Miniportadapter unterstützt. Wenn sich die aktuellen Offloadfunktionen ändern, meldet ein Miniporttreiber die neuen Funktionen in einer NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG Statusanzeige.
Die Kapselung 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 ein bitweises OR der Kapselungskennzeichnungen bereit, die die unterstützten Kapselungseinstellungen angeben, in jedem der Kapselung Member. 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 Statusanzeige stellt der Miniporttreiber ein bitweises OR der Kapselungsflaggen bereit, die die aktuellen Funktionen angeben, in jedem der Kapselung Member.
Die folgenden Flags werden für die Kapselung Member definiert:
NDIS_ENCAPSULATION_NOT_SUPPORTED
Gibt an, dass kein Entkapselungs-Offload unterstützt wird.
NDIS_ENCAPSULATION_NULL
Gibt die NULL-Kapselung an.
NDIS_ENCAPSULATION_IEEE_802_3
Gibt IEEE 802.3-Kapselung an.
NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
Gibt 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-Element jeder NET_BUFFER_LIST Struktur angegeben werden.
NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
Gibt die Kapselung für Routingprotokolle (Logical Link Control, LLC) an, wie in RFC 1483 beschrieben. Dieses Flag wird auch verwendet, um ethernet LLC/SNAP-Kapselung anzugeben.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10, Version 1912 |
Header- | ntddndis.h |