estructura NDIS_UDP_SEGMENTATION_OFFLOAD (ntddndis.h)

La estructura de NDIS_UDP_SEGMENTATION_OFFLOAD proporciona información de descarga de segmentación UDP (USO) en la estructura NDIS_OFFLOAD .

Sintaxis

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;

Miembros

IPv4

Estructura dentro de NDIS_UDP_SEGMENTATION_OFFLOAD que especifica información IPv4, que contiene los siguientes miembros:

IPv4.Encapsulation

Configuración de encapsulación para IPv4. Para obtener más información sobre este miembro, vea la siguiente sección Comentarios.

IPv4.MaxOffLoadSize

Bytes máximos de datos de usuario que el transporte puede pasar al controlador de miniporte en un solo paquete. El transporte no pasará un paquete al controlador de miniporte que contiene más bytes de datos de usuario que maxOffLoadSize especifica. Si este tipo de paquete debe transmitirse, el propio transporte segmenta el paquete en paquetes más pequeños.

IPv4.MinSegmentCount

El número mínimo de segmentos que un paquete UDP grande debe ser divisible antes de que el transporte pueda descargarlo en el hardware para la segmentación. El transporte no descargará un paquete grande al controlador de minipuerto para la segmentación, a menos que el controlador de miniporte pueda crear al menos tantos segmentos como MinSegmentCount especifique del paquete. Si un paquete UDP grande no cumple el requisito de segmento mínimo, el propio transporte TCP/IP segmenta el paquete en paquetes más pequeños.

IPv4.SubMssFinalSegmentSupported

Valor ULONG que especifica si todos los segmentos que deriva un controlador de minipuerto de un paquete UDP grande deben ser el mismo tamaño máximo de segmento (MSS) o no. Si el controlador de minipuerto no establece la funcionalidad SubMssFinalSegmentSupported , cada paquete UDP grande descargado por el transporte debe tener Length % MSS == 0. Es decir, el paquete grande es divisible en N paquetes con cada segmento de paquete que contiene exactamente bytes de usuario de MSS . Si el controlador de minipuerto establece la funcionalidad SubMssFinalSegmentSupported , esta condición de divisibilidad de longitud de paquete en el transporte no se aplica. En otras palabras, el segmento final puede ser menor que MSS.

El controlador debe establecer el valor de SubMssFinalSegmentSupported en NDIS_OFFLOAD_SUPPORTED si la minipuerta es capaz de segmentar UDP, donde la longitud total del paquete grande tiene un resto distinto de cero cuando se divide por MSS. Cuando la compatibilidad con controladores de minipuerto se indica a través de esta marca, el controlador de protocolo puede emitir envíos UDP grandes donde la longitud de carga UDP del paquete segmentado final es menor que MSS.

Para obtener más información, consulte Descarga de segmentación udp (USO).

IPv4.Reserved

Reservado. Los controladores de minipuerto no deben leer ni escribir en este campo.

IPv6

Estructura dentro de NDIS_UDP_SEGMENTATION_OFFLOAD que especifica información de IPv6, que contiene los siguientes miembros:

IPv6.Encapsulation

Configuración de encapsulación para IPv6. Para obtener más información sobre este miembro, vea la siguiente sección Comentarios.

IPv6.MaxOffLoadSize

Bytes máximos de datos de usuario que el transporte puede pasar al controlador de miniporte en un solo paquete. El transporte no pasará un paquete al controlador de miniporte que contiene más bytes de datos de usuario que maxOffLoadSize especifica. Si este tipo de paquete debe transmitirse, el propio transporte segmenta el paquete en paquetes más pequeños.

IPv6.MinSegmentCount

El número mínimo de segmentos que un paquete UDP grande debe ser divisible antes de que el transporte pueda descargarlo en el hardware para la segmentación. El transporte no descargará un paquete grande al controlador de minipuerto para la segmentación, a menos que el controlador de miniporte pueda crear al menos tantos segmentos como MinSegmentCount especifique del paquete. Si un paquete UDP grande no cumple el requisito de segmento mínimo, el propio transporte TCP/IP segmenta el paquete en paquetes más pequeños.

IPv6.SubMssFinalSegmentSupported

Valor ULONG que especifica si todos los segmentos que deriva un controlador de minipuerto de un paquete UDP grande deben ser el mismo tamaño máximo de segmento (MSS) o no. Si el controlador de minipuerto no establece la funcionalidad SubMssFinalSegmentSupported , cada paquete UDP grande descargado por el transporte debe tener Length % MSS == 0. Es decir, el paquete grande es divisible en N paquetes con cada segmento de paquete que contiene exactamente bytes de usuario de MSS . Si el controlador de minipuerto establece la funcionalidad SubMssFinalSegmentSupported , esta condición de divisibilidad de longitud de paquete en el transporte no se aplica. En otras palabras, el segmento final puede ser menor que MSS.

El controlador debe establecer el valor de SubMssFinalSegmentSupported en NDIS_OFFLOAD_SUPPORTED si la minipuerta es capaz de segmentar UDP, donde la longitud total del paquete grande tiene un resto distinto de cero cuando se divide por MSS. Cuando la compatibilidad con controladores de minipuerto se indica a través de esta marca, el controlador de protocolo puede emitir envíos UDP grandes donde la longitud de carga UDP del paquete segmentado final es menor que MSS.

Para obtener más información, consulte Descarga de segmentación udp (USO).

IPv6.Reserved1

Reservado. Los controladores de minipuerto no deben leer ni escribir en este campo.

IPv6.IpExtensionHeadersSupported

Valor ULONG que establece un controlador de minipuerto para indicar que el adaptador de minipuerto puede segmentar un paquete UDP grande cuyo encabezado IP contiene encabezados de extensión IPv6.

IPv6.Reserved2

Reservado. Los controladores de minipuerto no deben leer ni escribir en este campo.

Comentarios

Los controladores de minipuerto deben establecer los valores de los campos y requisitos de encapsulación de esta estructura de forma similar a la estructura de NDIS_TCP_LARGE_SEND_OFFLOAD_V2 .

La estructura NDIS_UDP_SEGMENTATION_OFFLOAD se usa en el miembro UdpSegmentation de la estructura NDIS_OFFLOAD . NDIS_UDP_SEGMENTATION_OFFLOAD especifica los servicios actuales o admitidos que proporciona un adaptador de minipuerto para segmentar paquetes UDP grandes en paquetes más pequeños.

NDIS_OFFLOAD se usa en la estructura de NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES , NDIS_BIND_PARAMETERS estructura, estructura de NDIS_FILTER_ATTACH_PARAMETERS , OID de OID_TCP_OFFLOAD_CURRENT_CONFIG y la indicación de estado de NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG .

Para OID_TCP_OFFLOAD_CURRENT_CONFIG, la estructura de NDIS_OFFLOAD especifica las funcionalidades de descarga de tareas que admite un adaptador de miniporte. Si cambian las funcionalidades de descarga actuales, un controlador de minipuerto notifica las nuevas funcionalidades en una indicación de estado NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG .

Los miembros de encapsulación de NDIS_UDP_SEGMENTATION_OFFLOAD definen la configuración de encapsulación UDP para el adaptador de minipuerto.

En respuesta a una solicitud de consulta OID_TCP_OFFLOAD_CURRENT_CONFIG , NDIS proporciona un OR bit a bit de las marcas de encapsulación, que indican la configuración de encapsulación admitida, en cada uno de los miembros de encapsulación . Los controladores de minipuerto deben proporcionar encapsulación Ethernet (NDIS_ENCAPSULATION_IEEE_802_3). Los demás tipos de encapsulación son opcionales.

Para una indicación de estado de NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG , el controlador de minipuerto proporciona un OR bit a bit de las marcas de encapsulación, que indican las funcionalidades actuales, en cada uno de los miembros de encapsulación .

Las marcas siguientes se definen para los miembros de encapsulación :

NDIS_ENCAPSULATION_NOT_SUPPORTED
Especifica que no se admite la descarga de encapsulación.

NDIS_ENCAPSULATION_NULL
Especifica la encapsulación NULL.

NDIS_ENCAPSULATION_IEEE_802_3
Especifica la encapsulación IEEE 802.3.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
Especifica la encapsulación IEEE 802.3p y IEEE 802.3q.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
Especifica que la configuración de encapsulación IEEE 802.3p y IEEE 802.3q se especifica en el miembro NetBufferListInfo de cada estructura de NET_BUFFER_LIST.

NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
Especifica la encapsulación del control de vínculos lógicos (LLC) para los protocolos enrutados, como se describe en RFC 1483. Esta marca también se usa para indicar la encapsulación Ethernet LLC/SNAP.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1912
Encabezado ntddndis.h

Consulte también

Descarga de segmentación udp (USO)