Partager via


NET_BUFFER Structure

NDIS 6.0 et versions ultérieures NET_BUFFER structures sont analogues aux structures NDIS_PACKET utilisées par NDIS 5.x et les pilotes antérieurs. Chaque NET_BUFFER structure empaquette un paquet de données réseau.

La figure suivante montre les champs d’une structure NET_BUFFER.

Diagramme montrant les champs d’une structure NET_BUFFER.

La structure NET_BUFFER inclut une structure NET_BUFFER_HEADER dans le membre netBufferHeader. La structure NET_BUFFER_HEADER inclut une structure NET_BUFFER_DATA dans le membre NetBufferData. Vous devez utiliser des macros NDIS pour accéder aux membres de NET_BUFFER structure. Pour obtenir la liste complète de ces macros, consultez la page de référence de structure NET_BUFFER.

Certains membres de la structure NET_BUFFER sont utilisés uniquement par NDIS. Les membres que les pilotes utilisent généralement sont les suivants :

protocol réservé
Réservé pour une utilisation par les pilotes de protocole.

MiniportReserved
Réservé à l’utilisation par les pilotes miniports.

NdisPoolHandle
Spécifie un handle de pool qui identifie le pool NET_BUFFER à partir duquel la structure NET_BUFFER a été allouée.

suivant
Spécifie un pointeur vers la structure de NET_BUFFER suivante dans une liste liée de structures NET_BUFFER. S’il s’agit de la dernière structure NET_BUFFER dans la liste, ce membre est NULL.

DataLength
Spécifie la longueur en octets des données réseau dans la chaîne MDL.

DataOffset
Spécifie le décalage, en octets, du début de la mémoire dans la chaîne MDL au début des données réseau de la chaîne MDL.

CurrentMdl
Spécifie un pointeur vers le premier MDL que le pilote actuel utilise. Ce pointeur fournit une optimisation qui améliore les performances en ignorant les DLL MDL que le pilote actuel n’utilise pas.

CurrentMdlOffset
Spécifie le décalage, en octets, au début de l’espace de données utilisé dans le MDL spécifié par le membre CurrentMdl de la structure NET_BUFFER.

La figure suivante montre la relation entre le CurrentMdl, CurrentMdlOffset, DataOffsetet membres de DataLength et l’espace de données.

Diagramme illustrant l’allocation d’espace de données par rapport à CurrentMdl, CurrentMdlOffset, DataOffset et DataLength.

NDIS fournit des fonctions pour gérer l’espace de données dans la chaîne MDL. Comment les pilotes utilisent l’espace de données change dynamiquement avec le pilote actuel. Il existe parfois de l’espace de données actuellement inutilisé par le pilote actuel. Bien que l’espace de données inutilisé soit actuellement inutilisé, il peut contenir des données valides. Par exemple, sur le chemin de réception, le espace de données inutilisé peut contenir des informations d’en-tête utilisées par un pilote de niveau inférieur.

Les pilotes effectuent des opérations de retraite et d’avance pour augmenter et diminuer l’espace de données utilisé . Pour plus d’informations sur les opérations de retraite et d’avance, consultez retraite et opérations avancées.

Les termes et définitions suivants décrivent les éléments de l’espace de données NET_BUFFER :

espace de données utilisé
espace de données utilisé contient des données que le pilote actuel utilise à l’heure actuelle. Les pilotes augmentent espace de données utilisé avec les opérations de retraite et réduisent espace de données utilisé avec les opérations avancées.

espace de données inutilisé
Le pilote actuel n’utilise pas cet espace de données à l’heure actuelle.

taille totale des données
La taille totale des données correspond à la somme de la taille de l’espace de données utilisé et espace de données inutilisé. Pour calculer la taille totale, ajoutez le DataOffset au DataLength .

Retraite
Les opérations de retraite augmentent la taille de l’espace de données utilisé .

Avance
Les opérations avancées diminuent la taille de l’espace de données utilisé .