NDIS_UDP_SEGMENTATION_OFFLOAD estrutura (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
Os bytes máximos 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 miniporto possa criar pelo menos tantos segmentos quanto MinSegmentCount especifica do pacote. Se um pacote UDP grande não atender ao requisito mínimo de segmento, o transporte TCP/IP em si segmenta o pacote em pacotes menores.
IPv4.SubMssFinalSegmentSupported
Um valor ULONG que especifica se todos os segmentos que um driver de miniporto 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 de subMssFinalSegmentSupported, cada pacote UDP grande descarregado pelo transporte deverá ter Length % MSS == 0. Ou seja, o pacote grande é divisível em pacotes N com cada segmento de pacote contendo exatamente bytes de usuário do 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 mss.
O driver deve definir o valor de subMssFinalSegmentSupported para 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 por mss. Quando o suporte ao driver de miniporto é indicado por meio desse sinalizador, o driver de protocolo tem permissão para emitir envios UDP grandes em que o comprimento de carga UDP do pacote segmentado final é menor que mss.
Para obter mais informações, consulte uso (descarregamento de segmentação UDP).
IPv4.Reserved
Reservado. Os drivers de miniporto não devem ler ou gravar neste campo.
IPv6
Uma estrutura dentro de NDIS_UDP_SEGMENTATION_OFFLOAD que especifica informações 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
Os bytes máximos 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 miniporto possa criar pelo menos tantos segmentos quanto MinSegmentCount especifica do pacote. Se um pacote UDP grande não atender ao requisito mínimo de segmento, o transporte TCP/IP em si segmenta o pacote em pacotes menores.
IPv6.SubMssFinalSegmentSupported
Um valor ULONG que especifica se todos os segmentos que um driver de miniporto 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 de subMssFinalSegmentSupported, cada pacote UDP grande descarregado pelo transporte deverá ter Length % MSS == 0. Ou seja, o pacote grande é divisível em pacotes N com cada segmento de pacote contendo exatamente bytes de usuário do 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 mss.
O driver deve definir o valor de subMssFinalSegmentSupported para 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 por mss. Quando o suporte ao driver de miniporto é indicado por meio desse sinalizador, o driver de protocolo tem permissão para emitir envios UDP grandes em que o comprimento de carga UDP do pacote segmentado final é menor que mss.
Para obter mais informações, consulte uso (descarregamento de segmentação UDP).
IPv6.Reserved1
Reservado. Os drivers de miniporto não devem ler ou gravar neste campo.
IPv6.IpExtensionHeadersSupported
Um valor ULONG que um driver de miniporto define para indicar que o adaptador de miniporto pode segmentar um pacote UDP grande cujo cabeçalho IP contém cabeçalhos de extensão IPv6.
IPv6.Reserved2
Reservado. Os drivers de miniporto não devem ler ou gravar neste campo.
Observações
Os drivers de miniporto devem definir os valores dos campos e requisitos de encapsulamento dessa estrutura de forma semelhante à estrutura de 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 serviços atuais ou compatíveis que um adaptador de miniporto fornece para segmentar pacotes UDP grandes em pacotes menores.
NDIS_OFFLOAD é usado na estrutura NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES, estrutura NDIS_BIND_PARAMETERS, estrutura NDIS_FILTER_ATTACH_PARAMETERS, OID_TCP_OFFLOAD_CURRENT_CONFIG OID e na indicação de status NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG.
Para OID_TCP_OFFLOAD_CURRENT_CONFIG, a estrutura de NDIS_OFFLOAD especifica os recursos de descarregamento de tarefas 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 do de Encapsulamento de de NDIS_UDP_SEGMENTATION_OFFLOAD definem as configurações de encapsulamento UDP para o adaptador de miniporto.
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 de 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 do de Encapsulamento:
NDIS_ENCAPSULATION_NOT_SUPPORTED
Especifica que não há suporte para 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 llc (controle de vínculo lógico) para protocolos roteados, conforme descrito no RFC 1483. Esse sinalizador também é usado para indicar o encapsulamento Ethernet LLC/SNAP.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 10, versão 1912 |
cabeçalho | ntddndis.h |