Compartilhar via


Estruturas de NET_BUFFER_LIST remontadas

Um driver NDIS pode criar uma estrutura de NET_BUFFER_LIST remontada de uma estrutura de NET_BUFFER_LIST existente. A estrutura remontada faz referência aos dados originais de várias estruturas de NET_BUFFER de origem. Os drivers podem usar esse tipo de estrutura para combinar com eficiência muitos buffers menores em um único buffer grande.

A figura a seguir mostra a relação entre uma estrutura de NET_BUFFER_LIST pai e uma estrutura filho remontada:

Diagrama ilustrando a relação entre uma estrutura de NET_BUFFER_LIST pai e uma estrutura filho remontada.

A figura anterior contém uma estrutura de NET_BUFFER_LIST pai e uma estrutura filho derivada desse pai. A estrutura pai tem uma estrutura NET_BUFFER_LIST_CONTEXT e três estruturas NET_BUFFER com MDLs anexados. O ponteiro pai da estrutura pai é NULL , indicando que não é uma estrutura derivada.

A estrutura de NET_BUFFER_LIST filho tem uma estrutura NET_BUFFER com MDLs anexados. A estrutura NET_BUFFER_LIST filho tem um ponteiro para a estrutura pai. O NULL em que um ponteiro de estrutura NET_BUFFER_LIST_CONTEXT seria indica que o filho não tem NET_BUFFER_LIST_CONTEXT estrutura.

Os drivers NDIS chamam a função NdisAllocateReassembledNetBufferList para remontar uma estrutura de NET_BUFFER_LIST fragmentada. O NDIS aloca uma nova estrutura de NET_BUFFER e MDLs com a estrutura de NET_BUFFER_LIST remontada. O NDIS não aloca uma estrutura NET_BUFFER_LIST_CONTEXT para a estrutura remontada. A estrutura de NET_BUFFER remontada e os MDLs descrevem os mesmos dados que a estrutura pai. Os dados não são copiados.

Para criar a estrutura de NET_BUFFER_LIST remontada, NdisAllocateReassembledNetBufferList ignora o número de bytes especificados no parâmetro StartOffset em cada uma das estruturas de NET_BUFFER pai. NdisAllocateReassembledNetBufferList concatena os dados restantes em cada estrutura de NET_BUFFER pai na cadeia MDL de uma estrutura de NET_BUFFER remontada. NdisAllocateReassembledNetBufferList recua (aumenta o espaço de dados usado em) a estrutura de NET_BUFFER remontada pelo valor especificado em DataOffsetDelta .

Os drivers NDIS chamam a função NdisFreeReassembledNetBufferList para liberar uma estrutura de NET_BUFFER_LIST remontada e a estrutura NET_BUFFER associada e a cadeia de MDL.

Estruturas de NET_BUFFER_LIST derivadas