Compartilhar via


estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO (ndis/nblchecksum.h)

A estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO especifica informações usadas no descarregamento de tarefas de soma de verificação do transporte TCP/IP para uma NIC. A estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO faz parte das informações de NET_BUFFER_LIST (dados fora de banda) associadas a uma estrutura NET_BUFFER_LIST .

Sintaxe

typedef struct _NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO {
  union {
    struct {
      ULONG IsIPv4 : 1;
      ULONG IsIPv6 : 1;
      ULONG TcpChecksum : 1;
      ULONG UdpChecksum : 1;
      ULONG IpHeaderChecksum : 1;
      ULONG Reserved : 11;
      ULONG TcpHeaderOffset : 10;
    } Transmit;
    struct {
      ULONG TcpChecksumFailed : 1;
      ULONG UdpChecksumFailed : 1;
      ULONG IpChecksumFailed : 1;
      ULONG TcpChecksumSucceeded : 1;
      ULONG UdpChecksumSucceeded : 1;
      ULONG IpChecksumSucceeded : 1;
      ULONG Loopback : 1;
      ULONG TcpChecksumValueInvalid : 1;
      ULONG IpChecksumValueInvalid : 1;
    } Receive;
    PVOID Value;
  };
} NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO, *PNDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO;

Membros

Transmit

Uma estrutura que contém os seguintes membros:

Transmit.IsIPv4

Definido pelo transporte TCP/IP para indicar que o pacote de envio contém endereços IPv4.

Transmit.IsIPv6

Definido pelo transporte TCP/IP para indicar que o pacote de envio contém endereços IPv6.

Transmit.TcpChecksum

Definido pelo transporte TCP/IP para indicar que a NIC deve calcular a soma de verificação TCP do pacote.

Transmit.UdpChecksum

Definido pelo transporte TCP/IP para indicar que a NIC deve calcular a soma de verificação UDP do pacote.

Transmit.IpHeaderChecksum

Definido pelo transporte TCP/IP para indicar que a NIC deve calcular a soma de verificação de IP para o primeiro cabeçalho IP no pacote. Se o pacote contiver um cabeçalho IP de túnel e um cabeçalho IP de transporte, a NIC deverá calcular a soma de verificação para ambos os cabeçalhos IP.

Transmit.Reserved

Reservado para NDIS.

Transmit.TcpHeaderOffset

O deslocamento, em bytes, do cabeçalho TCP desde o início do pacote para pacotes TCP. Os drivers de miniport podem usar TcpHeaderOffset para determinar o local do cabeçalho TCP para que eles não precisem analisar o cabeçalho MAC e IP.

Receive

Uma estrutura que contém os seguintes membros:

Receive.TcpChecksumFailed

Definido pelo driver de miniporto para indicar que a soma de verificação TCP calculada pela NIC não correspondeu à soma de verificação no cabeçalho TCP do pacote de recebimento.

Receive.UdpChecksumFailed

Definido pelo driver de miniporto para indicar que a soma de verificação UDP calculada pela NIC não correspondeu à soma de verificação no cabeçalho UDP do pacote de recebimento.

Receive.IpChecksumFailed

Definido pelo driver de miniporto para indicar que a soma de verificação de IP calculada pela NIC não correspondeu à soma de verificação no primeiro cabeçalho IP do pacote de recebimento. Se o pacote de recebimento contiver um cabeçalho IP de túnel e um cabeçalho IP de transporte, a NIC validará a soma de verificação para ambos os cabeçalhos IP.

Nota Para pacotes encapsulados que têm um cabeçalho IPv4 (externo) de túnel e um cabeçalho IPv4 de transporte (interno), o driver de miniporte deverá definir esse sinalizador se uma das validações de soma de verificação de cabeçalho IP falhar.
 

Receive.TcpChecksumSucceeded

Definido pelo driver de miniporto para indicar que a soma de verificação TCP calculada pela NIC correspondeu à soma de verificação no cabeçalho TCP do pacote de recebimento.

Receive.UdpChecksumSucceeded

Definido pelo driver de miniporto para indicar que a soma de verificação UDP calculada pela NIC correspondeu à soma de verificação no cabeçalho UDP do pacote de recebimento.

Receive.IpChecksumSucceeded

Definido pelo driver de miniporto para indicar que a soma de verificação de IP calculada pela NIC correspondeu à soma de verificação no primeiro cabeçalho IP do pacote de recebimento. Se o pacote de recebimento contiver um cabeçalho IP de túnel e um cabeçalho IP de transporte, a NIC validará a soma de verificação para os dois cabeçalhos IP.

Nota Para pacotes encapsulados que têm um cabeçalho IPv4 (externo) de túnel e um cabeçalho IPv4 de transporte (interno), o driver de miniporte deverá definir esse sinalizador somente se ambas as validações de soma de verificação de cabeçalho IP tiverem êxito.
 

Receive.Loopback

O NDIS usa esse bit. O driver de miniporte não deve examinar ou definir este bit; o driver de miniporte deve simplesmente ignorar esse bit.

Receive.TcpChecksumValueInvalid

Um driver de miniporto que dá suporte à RSC (Associação de Segmento de Recebimento) define esse sinalizador para indicar que a soma de verificação de cabeçalho TCP foi validada pela NIC, mas o valor de soma de verificação do cabeçalho TCP no pacote não é válido. Para obter mais informações, consulte Indicando segmentos unidos.

Os drivers de miniporte que não dão suporte ao RSC devem definir esse sinalizador como zero.

Nota Esse sinalizador tem suporte em drivers de miniporte NDIS 6.30 e posteriores em Windows 8, Windows Server 2012 e posteriores.
 

Receive.IpChecksumValueInvalid

Um driver de miniporto que dá suporte a RSC define esse sinalizador para indicar que, para um pacote IPv4, a soma de verificação do cabeçalho IP foi validada pela NIC, mas o valor da soma de verificação do cabeçalho IP no pacote não é válido. Para um pacote que consiste em um túnel e um cabeçalho IP de transporte, esse bit é aplicável somente ao cabeçalho IP do túnel. Para obter mais informações, consulte Indicando segmentos unidos.

Os drivers de miniporte que não dão suporte ao RSC devem definir esse sinalizador como zero.

Nota Esse sinalizador tem suporte em drivers de miniporte NDIS 6.30 e posteriores em Windows 8, Windows Server 2012 e posteriores.
 

Value

Uma versão PVOID das informações de soma de verificação. Os drivers de miniport podem usar esse membro para acessar as informações brutas em vez dos campos específicos.

Comentários

A estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO especifica informações usadas no descarregamento de tarefas de soma de verificação do transporte TCP/IP para uma NIC. A estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO faz parte das informações de NET_BUFFER_LIST (dados fora de banda) associadas a uma estrutura NET_BUFFER_LIST .

Antes que o transporte TCP/IP passe para o driver de miniporto um pacote TCP/IP no qual o driver de miniporte executará tarefas de soma de verificação, o transporte TCP/IP atualiza a estrutura de NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO associada à estrutura NET_BUFFER_LIST . Especificamente, o transporte TCP/IP define o sinalizador IsIPv4 ou IsIPv6 para indicar que o pacote de envio é um pacote IPv4 ou IPv6.

yySe o transporte TCP/IP não definir o sinalizador IsIPv4 ou IsIPv6 , o driver de miniporto não deve executar tarefas de soma de verificação no pacote. Se o transporte TCP/IP definir o sinalizador IsIPv4 ou IsIPv6 , ele também definirá os sinalizadores apropriados necessários para indicar quais somas de verificação o driver de miniporte deve calcular para o pacote. Para IPv4, isso inclui os sinalizadores IpHeaderChecksum, TcpChecksum ou UdpChecksum . Para IPv6, isso inclui os sinalizadores TcpChecksum ou UdpChecksum . Além disso, para pacotes TCP, o transporte TCP/IP define o campo TcpHeaderOffset quando o sinalizador IsIPv4 ou IPv6 está definido. O transporte não define esse campo para pacotes UDP.

Antes de indicar um pacote TCP/IP de recebimento no qual ele executa tarefas de soma de verificação, um driver de miniporto define os sinalizadores XxxChecksumFailed ou XxxChecksumSucceeded apropriados na estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO .

Nota O descarregamento de soma de verificação é desabilitado até que o miniporto receba OID_OFFLOAD_ENCAPSULATION. Depois de receber esse OID, o miniporto tem permissão para começar a validar as somas de verificação em alguns pacotes recebidos. O miniporto não é necessário para validar a soma de verificação em cada pacote; se os sinalizadores XxxChecksumFailed e XxxChecksumSucceeded estiverem limpos, o sistema operacional fará fallback para validar a soma de verificação no software. Esse comportamento é independente dos requisitos de certificação do driver WHCP, o que pode exigir que o miniporto valide a soma de verificação em todos os pacotes, pois outros drivers de protocolo no sistema podem não ter um mecanismo de fallback.
 
Para obter a estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO , um driver deve chamar a macro NET_BUFFER_LIST_INFO com um _Id de TcpIpChecksumNetBufferListInfo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Cabeçalho ndis/nblchecksum.h (inclua ndis.h)

Confira também

Indicando segmentos agrupados

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO