Partager via


Structures de NET_BUFFER_LIST réassemblage

Un pilote NDIS peut créer une structure de NET_BUFFER_LIST réassemble à partir d’une structure NET_BUFFER_LIST existante. La structure réassembled 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 volumineuse.

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

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

La figure précédente contient une structure NET_BUFFER_LIST parente 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 indiquant qu’il n’est pas 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 NULL où un pointeur de structure NET_BUFFER_LIST_CONTEXT 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 DLL avec la structure NET_BUFFER_LIST réassemble. NDIS n’alloue pas de structure NET_BUFFER_LIST_CONTEXT pour la structure réassemble. La structure NET_BUFFER réassembled et les 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éassembled, NdisAllocateReassembledNetBufferList ignore le nombre d’octets spécifiés 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 NET_BUFFER réassembled. NdisAllocateReassembledNetBufferList retraite (augmente l’espace de données utilisé dans) la structure de NET_BUFFER réassembled par la quantité spécifiée dans DataOffsetDelta.

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

structures NET_BUFFER_LIST dérivées