Partager via


Accès aux informations de NET_BUFFER_LIST de déchargement TCP/IP

Les versions NDIS 6.0 et ultérieures fournissent des données de déchargement TCP/IP hors bande (OOB) dans le membre NetBufferListInfo de la structure NET_BUFFER_LIST , qui spécifie une liste liée de structures NET_BUFFER . Le membre NetBufferListInfo est un tableau de valeurs qui contiennent des informations communes à toutes les structures NET_BUFFER de la liste.

Utilisez les identificateurs suivants avec la macro NET_BUFFER_LIST_INFO pour définir et obtenir les données OOB de déchargement TCP/IP dans le tableau NetBufferListInfo :

TcpIpChecksumNetBufferListInfo
Spécifie les informations de somme de contrôle utilisées dans le déchargement des tâches de somme de contrôle du protocole TCP/IP vers un pilote miniport. Lorsque vous spécifiez TcpIpChecksumNetBufferListInfo, NET_BUFFER_LIST_INFO retourne une structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO (pas un pointeur vers la structure). Cette structure contient une union qui permet d’accéder aux informations de somme de contrôle sous la forme d’une valeur PVOID unique ou de champs de bits.

IPsecOffloadV1NetBufferListInfo
Spécifie les informations de déchargement IPsec (Internet Protocol Security) utilisées dans le déchargement des tâches IPsec à partir du protocole TCP/IP vers un pilote miniport. Lorsque vous spécifiez IPsecOffloadV1NetBufferListInfo, NET_BUFFER_LIST_INFO retourne une structure NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO .

TcpLargeSendNetBufferListInfo
Spécifie les informations utilisées pour décharger la segmentation d’un paquet TCP volumineux du protocole TCP/IP vers un pilote miniport. Lorsque vous spécifiez TcpLargeSendNetBufferListInfo, NET_BUFFER_LIST_INFO retourne une structure NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO (pas un pointeur vers la structure). Cette structure contient une union qui permet d’accéder aux informations sous la forme d’une valeur PVOID unique ou de champs de bits.

Ieee8021QNetBufferListInfo
Spécifie des informations 802.1Q sur un paquet. Lorsque vous spécifiez Ieee8021QNetBufferListInfo, NET_BUFFER_LIST_INFO retourne le membre Value d’une structure NDIS_NET_BUFFER_LIST_8021Q_INFO . Cette structure peut spécifier des informations d’identificateur de priorité et de réseau local virtuel (VLAN) 802.1p. Les informations de priorité 802.1p sont utilisées pour établir la priorité des paquets dans les réseaux 802 de média partagé 802.

Si un pilote miniport signale la prise en charge de l’encapsulation NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB, il doit insérer les données Ieee8021QNetBufferListInfo dans des paquets Ethernet de déchargement d’envoi volumineux version 1 (LSOV1) et de déchargement d’envoi volumineux version 2 (LSOV2).

TcpOffloadBytesTransferred
Spécifie le nombre d’octets de données qui ont été transférés dans une opération d’envoi, de réception ou de déconnexion de la cheminée TCP.

TcpReceiveNoPush
Spécifie une valeur booléenne qui représente le mode push d’une demande de réception de déchargement de cheminée TCP. Si la valeur est TRUE, la demande de réception est en mode non push. Sinon, la demande de réception est en mode Push.

Pour les types de déchargement LSOV1, LSOV2, somme de contrôle et IPsec, un pilote miniport effectue le déchargement des tâches en fonction du type de données OOB et des fonctionnalités de déchargement signalées. Par exemple, si un pilote de protocole nécessite des services LSOV1 pour un paquet IPv4, chaque demande d’envoi que le pilote de protocole fournit inclut les informations du membre LsoV1Transmit dans le NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO données OOB. Notez que le pilote de protocole doit vérifier que le pilote miniport prend en charge IPv4, avec le type d’encapsulation spécifié, avant d’effectuer la demande d’envoi.

La structure NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO contient la taille maximale du segment (MSS). Le membre TcpHeaderOffset spécifie l’emplacement de l’en-tête TCP afin que le pilote miniport n’ait pas à analyser les en-têtes IP, les options IP ou les en-têtes d’extension IP.

Un pilote miniport NDIS 6.0 et versions ultérieures prenant en charge LSOV2 et LSOV1 doit case activée le membre Type de NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO pour déterminer si la pile de pilotes utilise LSOV2 ou LSOV1 et doit effectuer le déchargement approprié.

Pour LSOv1, avant qu’un pilote miniport ne termine l’envoi d’un paquet TCP volumineux qu’il a segmenté en paquets plus petits à l’aide de LSO, le pilote écrit le nombre d’octets de charge utile TCP qu’il a envoyés dans les paquets segmentés dans le membre TcpPayload de NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO.

Si un pilote miniport spécifie l’indicateur NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q dans ses fonctionnalités, le pilote peut effectuer des services de déchargement de tâches pour NET_BUFFER_LIST structures qui contiennent l’en-tête VLAN dans les données de mémoire tampon. Dans le cas des données reçues, cet indicateur indique que le pilote miniport effectue le calcul de la somme de contrôle de réception et place l’en-tête VLAN dans le paquet Ethernet.

Si un pilote miniport spécifie l’indicateur NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB dans ses fonctionnalités, il peut effectuer le déchargement sur NET_BUFFER_LIST structures qui contiennent l’en-tête VLAN dans les données OOB Ieee8021QnetBufferListInfo . Dans le cas de déchargement de la somme de contrôle de réception, le miniport insère l’en-tête VLAN dans les données OOB Ieee8021QnetBufferListInfo .