Compartilhar via


estrutura NDIS_UDP_SEGMENTATION_OFFLOAD (ntddndis.h)

A estrutura NDIS_UDP_SEGMENTATION_OFFLOAD fornece informações de USO (Descarregamento de Segmentação UDP) na estrutura NDIS_OFFLOAD .

Sintaxe

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;

Membros

IPv4

Uma estrutura dentro de NDIS_UDP_SEGMENTATION_OFFLOAD que especifica informações IPv4, contendo os seguintes membros:

IPv4.Encapsulation

Configurações de encapsulamento para IPv4. Para obter mais informações sobre esse membro, consulte a seção Comentários a seguir.

IPv4.MaxOffLoadSize

O máximo de bytes de dados do usuário que o transporte pode passar para o driver de miniporto em um único pacote. O transporte não passará um pacote para o driver de miniporto que contém mais bytes de dados do usuário do que MaxOffLoadSize especifica. Se esse pacote precisar ser transmitido, o transporte em si segmenta o pacote em pacotes menores.

IPv4.MinSegmentCount

O número mínimo de segmentos pelos quais um pacote UDP grande deve ser divisível antes que o transporte possa descarregá-lo para o hardware para segmentação. O transporte não descarregará um pacote grande para o driver de miniporto para segmentação, a menos que o driver de miniporte possa criar pelo menos tantos segmentos quanto MinSegmentCount especifica do pacote. Se um pacote UDP grande não atender ao requisito de segmento mínimo, o transporte TCP/IP segmenta o pacote em pacotes menores.

IPv4.SubMssFinalSegmentSupported

Um valor ULONG que especifica se todos os segmentos que um driver de miniporta deriva de um pacote UDP grande devem ter o mesmo tamanho máximo de segmento (MSS) ou não. Se o driver de miniporto não definir a funcionalidade SubMssFinalSegmentSupported , cada pacote UDP grande descarregado pelo transporte deverá ter Length % MSS == 0. Ou seja, o pacote grande é divisível em N pacotes com cada segmento de pacote contendo exatamente bytes de usuário mss . Se o driver de miniporto definir a funcionalidade SubMssFinalSegmentSupported , essa condição de divisibilidade de comprimento do pacote no transporte não se aplicará. Em outras palavras, o segmento final pode ser menor que o MSS.

O driver deve definir o valor de SubMssFinalSegmentSupported como NDIS_OFFLOAD_SUPPORTED se o miniporto for capaz de segmentar UDP envia para onde o comprimento total do pacote grande tem um restante diferente de zero quando dividido pelo MSS. Quando o suporte ao driver de miniporta é indicado por meio desse sinalizador, o driver de protocolo tem permissão para emitir envios UDP grandes para onde o comprimento do conteúdo UDP do pacote segmentado final é menor que o MSS.

Para obter mais informações, consulte Descarregamento de Segmentação UDP (USO).

IPv4.Reserved

Reservado. Os drivers de miniporta não devem ler ou gravar nesse campo.

IPv6

Uma estrutura dentro de NDIS_UDP_SEGMENTATION_OFFLOAD que especifica informações de IPv6, contendo os seguintes membros:

IPv6.Encapsulation

Configurações de encapsulamento para IPv6. Para obter mais informações sobre esse membro, consulte a seção Comentários a seguir.

IPv6.MaxOffLoadSize

O máximo de bytes de dados do usuário que o transporte pode passar para o driver de miniporto em um único pacote. O transporte não passará um pacote para o driver de miniporto que contém mais bytes de dados do usuário do que MaxOffLoadSize especifica. Se esse pacote precisar ser transmitido, o transporte em si segmenta o pacote em pacotes menores.

IPv6.MinSegmentCount

O número mínimo de segmentos pelos quais um pacote UDP grande deve ser divisível antes que o transporte possa descarregá-lo para o hardware para segmentação. O transporte não descarregará um pacote grande para o driver de miniporto para segmentação, a menos que o driver de miniporte possa criar pelo menos tantos segmentos quanto MinSegmentCount especifica do pacote. Se um pacote UDP grande não atender ao requisito de segmento mínimo, o transporte TCP/IP segmenta o pacote em pacotes menores.

IPv6.SubMssFinalSegmentSupported

Um valor ULONG que especifica se todos os segmentos que um driver de miniporta deriva de um pacote UDP grande devem ter o mesmo tamanho máximo de segmento (MSS) ou não. Se o driver de miniporto não definir a funcionalidade SubMssFinalSegmentSupported , cada pacote UDP grande descarregado pelo transporte deverá ter Length % MSS == 0. Ou seja, o pacote grande é divisível em N pacotes com cada segmento de pacote contendo exatamente bytes de usuário mss . Se o driver de miniporto definir a funcionalidade SubMssFinalSegmentSupported , essa condição de divisibilidade de comprimento do pacote no transporte não se aplicará. Em outras palavras, o segmento final pode ser menor que o MSS.

O driver deve definir o valor de SubMssFinalSegmentSupported como NDIS_OFFLOAD_SUPPORTED se o miniporto for capaz de segmentar UDP envia para onde o comprimento total do pacote grande tem um restante diferente de zero quando dividido pelo MSS. Quando o suporte ao driver de miniporta é indicado por meio desse sinalizador, o driver de protocolo tem permissão para emitir envios UDP grandes para onde o comprimento do conteúdo UDP do pacote segmentado final é menor que o MSS.

Para obter mais informações, consulte Descarregamento de Segmentação UDP (USO).

IPv6.Reserved1

Reservado. Os drivers de miniporta não devem ler ou gravar nesse campo.

IPv6.IpExtensionHeadersSupported

Um valor ULONG que um driver de miniporto define para indicar que o adaptador de miniport pode segmentar um pacote UDP grande cujo cabeçalho IP contém cabeçalhos de extensão IPv6.

IPv6.Reserved2

Reservado. Os drivers de miniporta não devem ler ou gravar nesse campo.

Comentários

Os drivers de miniport devem definir os valores dos campos dessa estrutura e os requisitos de encapsulamento da mesma forma que a estrutura NDIS_TCP_LARGE_SEND_OFFLOAD_V2 .

A estrutura NDIS_UDP_SEGMENTATION_OFFLOAD é usada no membro UdpSegmentation da estrutura NDIS_OFFLOAD . NDIS_UDP_SEGMENTATION_OFFLOAD especifica os serviços atuais ou com suporte que um adaptador de miniporto fornece para segmentar pacotes UDP grandes em pacotes menores.

NDIS_OFFLOAD é usado na estrutura de NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES, estrutura NDIS_BIND_PARAMETERS, estrutura NDIS_FILTER_ATTACH_PARAMETERS, OID_TCP_OFFLOAD_CURRENT_CONFIG OID e na indicação status NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG.

Para OID_TCP_OFFLOAD_CURRENT_CONFIG, a estrutura NDIS_OFFLOAD especifica os recursos de descarregamento de tarefa compatíveis com um adaptador de miniporto. Se os recursos de descarregamento atuais forem alterados, um driver de miniporto relatará os novos recursos em uma indicação de status NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG.

Os membros de encapsulamento do NDIS_UDP_SEGMENTATION_OFFLOAD definem as configurações de encapsulamento UDP para o adaptador de miniporta.

Em resposta a uma solicitação de consulta OID_TCP_OFFLOAD_CURRENT_CONFIG , o NDIS fornece um OR bit a bit dos sinalizadores de encapsulamento, que indicam as configurações de encapsulamento com suporte, em cada um dos membros de Encapsulamento . Os drivers de miniporto devem fornecer encapsulamento Ethernet (NDIS_ENCAPSULATION_IEEE_802_3). Os outros tipos de encapsulamento são opcionais.

Para uma indicação status NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG, o driver de miniporto fornece um OR bit a bit dos sinalizadores de encapsulamento, que indicam os recursos atuais, em cada um dos membros de Encapsulamento.

Os seguintes sinalizadores são definidos para os membros de encapsulamento :

NDIS_ENCAPSULATION_NOT_SUPPORTED
Especifica que não há suporte para nenhum descarregamento de encapsulamento.

NDIS_ENCAPSULATION_NULL
Especifica o encapsulamento NULL.

NDIS_ENCAPSULATION_IEEE_802_3
Especifica o encapsulamento IEEE 802.3.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
Especifica o encapsulamento IEEE 802.3p e IEEE 802.3q.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
Especifica que as configurações de encapsulamento IEEE 802.3p e IEEE 802.3q são especificadas no membro NetBufferListInfo de cada estrutura NET_BUFFER_LIST.

NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
Especifica o encapsulamento de LLC (controle de link lógico) para protocolos roteados, conforme descrito em RFC 1483. Esse sinalizador também é usado para indicar o encapsulamento Ethernet LLC/SNAP.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1912
Cabeçalho ntddndis.h

Confira também

Descarregamento de segmentação UDP (USO)