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.
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.
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.
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.
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 .
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de