NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO structure (ndis/nblchecksum.h)
La structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO spécifie les informations utilisées dans le déchargement des tâches de somme de contrôle du transport TCP/IP vers une carte réseau. La structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO fait partie des informations NET_BUFFER_LIST (données hors bande) associées à une structure NET_BUFFER_LIST .
Syntaxe
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;
Membres
Transmit
Structure qui contient les membres suivants :
Transmit.IsIPv4
Défini par le transport TCP/IP pour indiquer que le paquet d’envoi contient des adresses IPv4.
Transmit.IsIPv6
Défini par le transport TCP/IP pour indiquer que le paquet d’envoi contient des adresses IPv6.
Transmit.TcpChecksum
Défini par le transport TCP/IP pour indiquer que la carte réseau doit calculer la somme de contrôle TCP du paquet.
Transmit.UdpChecksum
Défini par le transport TCP/IP pour indiquer que la carte réseau doit calculer la somme de contrôle UDP du paquet.
Transmit.IpHeaderChecksum
Défini par le transport TCP/IP pour indiquer que la carte réseau doit calculer la somme de contrôle IP pour le premier en-tête IP du paquet. Si le paquet contient à la fois un en-tête IP de tunnel et un en-tête IP de transport, la carte réseau doit calculer la somme de contrôle pour les deux en-têtes IP.
Transmit.Reserved
Réservé pour NDIS.
Transmit.TcpHeaderOffset
Décalage, en octets, de l’en-tête TCP à partir du début du paquet pour les paquets TCP. Les pilotes Miniport peuvent utiliser TcpHeaderOffset pour déterminer l’emplacement de l’en-tête TCP afin qu’ils n’ont pas besoin d’analyser l’en-tête MAC et l’en-tête IP.
Receive
Structure qui contient les membres suivants :
Receive.TcpChecksumFailed
Défini par le pilote miniport pour indiquer que la somme de contrôle TCP calculée par la carte réseau ne correspondait pas à la somme de contrôle dans l’en-tête TCP du paquet de réception.
Receive.UdpChecksumFailed
Défini par le pilote miniport pour indiquer que la somme de contrôle UDP calculée par la carte réseau ne correspond pas à la somme de contrôle dans l’en-tête UDP du paquet de réception.
Receive.IpChecksumFailed
Défini par le pilote miniport pour indiquer que la somme de contrôle IP calculée par la carte réseau ne correspondait pas à la somme de contrôle dans le premier en-tête IP du paquet de réception. Si le paquet de réception contient à la fois un en-tête IP de tunnel et un en-tête IP de transport, la carte réseau valide la somme de contrôle pour les deux en-têtes IP.
Receive.TcpChecksumSucceeded
Défini par le pilote miniport pour indiquer que la somme de contrôle TCP calculée par la carte réseau correspond à la somme de contrôle dans l’en-tête TCP du paquet de réception.
Receive.UdpChecksumSucceeded
Défini par le pilote miniport pour indiquer que la somme de contrôle UDP calculée par la carte réseau correspond à la somme de contrôle dans l’en-tête UDP du paquet de réception.
Receive.IpChecksumSucceeded
Défini par le pilote miniport pour indiquer que la somme de contrôle IP calculée par la carte réseau correspond à la somme de contrôle dans le premier en-tête IP du paquet de réception. Si le paquet de réception contient à la fois un en-tête IP de tunnel et un en-tête IP de transport, la carte réseau valide la somme de contrôle pour les deux en-têtes IP.
Receive.Loopback
NDIS utilise ce bit. Le pilote miniport ne doit pas examiner ou définir ce bit ; le pilote miniport doit simplement ignorer ce bit.
Receive.TcpChecksumValueInvalid
Un pilote miniport qui prend en charge le regroupement de segments de réception (RSC) définit cet indicateur pour indiquer que la somme de contrôle d’en-tête TCP a été validée par la carte réseau, mais que la valeur de somme de contrôle d’en-tête TCP dans le paquet n’est pas valide. Pour plus d’informations, consultez Indication des segments coalesciés.
Les pilotes miniport qui ne prennent pas en charge RSC doivent définir cet indicateur sur zéro.
Receive.IpChecksumValueInvalid
Un pilote miniport qui prend en charge RSC définit cet indicateur pour indiquer que pour un paquet IPv4, la somme de contrôle d’en-tête IP a été validée par la carte réseau, mais que la valeur de somme de contrôle d’en-tête IP dans le paquet n’est pas valide. Pour un paquet constitué à la fois d’un tunnel et d’un en-tête IP de transport, ce bit s’applique uniquement à l’en-tête IP du tunnel. Pour plus d’informations, consultez Indication des segments coalesciés.
Les pilotes miniport qui ne prennent pas en charge RSC doivent définir cet indicateur sur zéro.
Value
Version PVOID des informations de somme de contrôle. Les pilotes miniport peuvent utiliser ce membre pour accéder aux informations brutes au lieu des champs spécifiques.
Remarques
La structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO spécifie les informations utilisées pour décharger les tâches de somme de contrôle du transport TCP/IP vers une carte réseau. La structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO fait partie des informations NET_BUFFER_LIST (données hors bande) associées à une structure NET_BUFFER_LIST .
Avant que le transport TCP/IP ne passe au pilote miniport un paquet TCP/IP sur lequel le pilote miniport effectue des tâches de somme de contrôle, le transport TCP/IP met à jour la structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO associée à la structure NET_BUFFER_LIST . Plus précisément, le transport TCP/IP définit l’indicateur IsIPv4 ou IsIPv6 pour indiquer que le paquet d’envoi est un paquet IPv4 ou IPv6.
yySi le transport TCP/IP ne définit pas l’indicateur IsIPv4 ou IsIPv6 , le pilote miniport ne doit pas effectuer de tâches de somme de contrôle sur le paquet. Si le transport TCP/IP définit l’indicateur IsIPv4 ou IsIPv6 , il définit également les indicateurs appropriés requis pour indiquer les sommes de contrôle que le pilote miniport doit calculer pour le paquet. Pour IPv4, cela inclut les indicateurs IpHeaderChecksum, TcpChecksum ou UdpChecksum . Pour IPv6, cela inclut les indicateurs TcpChecksum ou UdpChecksum . En outre, pour les paquets TCP, le transport TCP/IP définit le champ TcpHeaderOffset lorsque l’indicateur IsIPv4 ou IPv6 est défini. Le transport ne définit pas ce champ pour les paquets UDP.
Avant d’indiquer un paquet TCP/IP de réception sur lequel il effectue des tâches de somme de contrôle, un pilote miniport définit les indicateurs XxxChecksumFailed ou XxxChecksumSucceededed appropriés dans la structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO .
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.0 et versions ultérieures. |
En-tête | ndis/nblchecksum.h (include ndis.h) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour