Partager via


empaquetage de données NET_BUFFER

L’empaquetage des données a été repensé dans NDIS 6.0. L’architecture d’envoi et de réception basée sur la structure NDIS_PACKET a été remplacée par une architecture basée sur des structures NET_BUFFER et NET_BUFFER_LIST . Une structure NET_BUFFER est l’équivalent fonctionnel d’une structure de NDIS_PACKET. Une structure de NET_BUFFER spécifie une mémoire tampon (chaîne MDL) pour les données réseau, ainsi que l’espace réservé pour NDIS, les pilotes de protocole et les pilotes miniport. NET_BUFFER structures peuvent être liées entre elles dans une liste décrite par une structure NET_BUFFER_LIST. Une structure NET_BUFFER_LIST fournit également un stockage pour les données hors bande (OOB) qui s’applique à toutes les structures NET_BUFFER de la liste.

Tous les composants de la pile de pilotes réseau de nouvelle génération Microsoft, y compris le transport TCP/IP et Winsock, utilisent NET_BUFFER empaquetage des données. L’empaquetage uniforme des données dans toute la pile de pilotes élimine la nécessité de reconditionner les données, simplifie la gestion des données et réduit le nombre d’appels de fonction.

Pour prendre en charge les anciens pilotes qui utilisent des structures NDIS_PACKET, NDIS 6.0 traduit les structures NDIS_PACKET en structures NET_BUFFER et vice versa. Cette traduction est transparente pour les pilotes NDIS.

NDIS propage les exigences de remplissage de données d’un pilote à des pilotes de niveau supérieur. Lors de l’allocation de NET_BUFFER et de structures NET_BUFFER_LIST pour l’envoi de données, un pilote de niveau supérieur alloue suffisamment d’espace de données pour prendre en charge tous les pilotes de niveau inférieur dans la pile. Par conséquent, les pilotes de niveau inférieur n’ont pas besoin d’allouer d’espace tampon supplémentaire pour prendre en charge les en-têtes spécifiques à la couche. Au lieu de cela, ils peuvent utiliser l’espace de remplissage préalloué à cet effet.

Pour plus d’informations sur l’architecture NET_BUFFER, consultez Architecture NET_BUFFER.