Partager via


Structures NET_BUFFER_LIST réassembles

Un pilote NDIS peut créer une structure de NET_BUFFER_LIST réassemblage à partir d’une structure NET_BUFFER_LIST existante. La structure réassemble fait référence aux données d’origine de plusieurs structures NET_BUFFER sources. Les pilotes peuvent utiliser ce type de structure pour combiner efficacement de nombreuses mémoires tampons plus petites en une seule mémoire tampon de grande taille.

La figure suivante montre la relation entre une structure parente NET_BUFFER_LIST et une structure enfant réassemblage :

Diagramme illustrant la relation entre une structure parente NET_BUFFER_LIST et une structure enfant réassemble.

La figure précédente contient une structure parente NET_BUFFER_LIST et une structure enfant dérivée de ce parent. La structure parente a une structure NET_BUFFER_LIST_CONTEXT et trois structures NET_BUFFER avec des DLL attachées. Le pointeur parent de la structure parente est NULL , ce qui indique qu’il ne s’agit pas d’une structure dérivée.

La structure NET_BUFFER_LIST enfant a une structure NET_BUFFER avec des DLL attachées. La structure NET_BUFFER_LIST enfant a un pointeur vers la structure parente. La valeur NULL où un pointeur de structure NET_BUFFER_LIST_CONTEXT serait indique que l’enfant n’a pas de structure NET_BUFFER_LIST_CONTEXT.

Les pilotes NDIS appellent la fonction NdisAllocateReassembledNetBufferList pour réassembler une structure de NET_BUFFER_LIST fragmentée. NDIS alloue une nouvelle structure NET_BUFFER et des MDL avec la structure NET_BUFFER_LIST réassemblage. NDIS n’alloue pas de structure NET_BUFFER_LIST_CONTEXT pour la structure réassemble. La structure de NET_BUFFER réassemblage et les FICHIERS MDL décrivent les mêmes données que la structure parente. Les données ne sont pas copiées.

Pour créer la structure de NET_BUFFER_LIST réassemble, NdisAllocateReassembledNetBufferList ignore le nombre d’octets spécifié dans le paramètre StartOffset dans chacune des structures NET_BUFFER parentes. NdisAllocateReassembledNetBufferList concatène les données restantes dans chaque structure NET_BUFFER parente dans la chaîne MDL d’une structure de NET_BUFFER réassemble. NdisAllocateReassembledNetBufferList retire (augmente l’espace de données utilisé dans) la structure de NET_BUFFER réassemble par la quantité spécifiée dans DataOffsetDelta .

Les pilotes NDIS appellent la fonction NdisFreeReassembledNetBufferList pour libérer une structure de NET_BUFFER_LIST réassemble et la structure de NET_BUFFER associée et la chaîne MDL associées.

Structures NET_BUFFER_LIST dérivées