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.

Note Pour les paquets encapsulés qui ont à la fois un en-tête IPv4 tunnel (externe) et un en-tête IPv4 de transport (interne), le pilote miniport doit définir cet indicateur si l’une des validations de la somme de contrôle d’en-tête IP a échoué.
 

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.

Note Pour les paquets encapsulés qui ont à la fois un en-tête IPv4 tunnel (externe) et un en-tête IPv4 de transport (interne), le pilote miniport doit définir cet indicateur uniquement si les deux validations de la somme de contrôle d’en-tête IP ont réussi.
 

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.

Note Cet indicateur est pris en charge dans les pilotes miniport NDIS 6.30 et ultérieur dans Windows 8, Windows Server 2012 et versions ultérieures.
 

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.

Note Cet indicateur est pris en charge dans les pilotes miniport NDIS 6.30 et ultérieur dans Windows 8, Windows Server 2012 et versions ultérieures.
 

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 .

Note Le déchargement de la somme de contrôle est désactivé jusqu’à ce que le miniport reçoive OID_OFFLOAD_ENCAPSULATION. Après avoir reçu cet OID, le miniport est alors autorisé à commencer à valider les sommes de contrôle sur certains paquets reçus. Le miniport n’est pas nécessaire pour valider la somme de contrôle sur chaque paquet ; Si les indicateurs XxxChecksumFailed et XxxChecksumSucceededed sont tous deux clairs, le système d’exploitation revient à valider la somme de contrôle dans le logiciel. Ce comportement est indépendant des exigences de certification des pilotes WHCP, qui peuvent nécessiter que le miniport valide la somme de contrôle sur tous les paquets, car les autres pilotes de protocole sur le système peuvent ne pas avoir de mécanisme de secours.
 
Pour obtenir la structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO , un pilote doit appeler la macro NET_BUFFER_LIST_INFO avec un _Id de TcpIpChecksumNetBufferListInfo.

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

Indication des segments coalescés

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO