Compartir a través de


Estructuras de NET_BUFFER_LIST ensambladas

Un controlador NDIS puede crear una estructura de NET_BUFFER_LIST ensamblada a partir de una estructura NET_BUFFER_LIST existente. La estructura ensamblada hace referencia a los datos originales de varias estructuras de origen NET_BUFFER . Los controladores pueden usar este tipo de estructura para combinar eficazmente muchos búferes más pequeños en un único búfer grande.

En la ilustración siguiente se muestra la relación entre una estructura de NET_BUFFER_LIST primaria y una estructura secundaria ensamblada:

Diagrama que ilustra la relación entre una estructura de NET_BUFFER_LIST primaria y una estructura secundaria ensamblada.

La ilustración anterior contiene una estructura de NET_BUFFER_LIST primaria y una estructura secundaria derivada de ese elemento primario. La estructura primaria tiene una estructura NET_BUFFER_LIST_CONTEXT y tres estructuras de NET_BUFFER con MDL adjuntas. El puntero primario de la estructura primaria es NULL que indica que no es una estructura derivada.

La estructura NET_BUFFER_LIST secundaria tiene una estructura de NET_BUFFER con MDL adjuntas. La estructura NET_BUFFER_LIST secundaria tiene un puntero a la estructura primaria. El valor NULL donde un puntero de estructura NET_BUFFER_LIST_CONTEXT indicaría que el elemento secundario no tiene ninguna estructura NET_BUFFER_LIST_CONTEXT.

Los controladores NDIS llaman a la función NdisAllocateReassembledNetBufferList para volver a ensamblar una estructura de NET_BUFFER_LIST fragmentada. NDIS asigna una nueva estructura de NET_BUFFER y MDL con la estructura NET_BUFFER_LIST ensamblada. NDIS no asigna una estructura NET_BUFFER_LIST_CONTEXT para la estructura ensamblada. El ensamblado NET_BUFFER estructura y MDL describen los mismos datos que la estructura primaria. Los datos no se copian.

Para crear la estructura NET_BUFFER_LIST ensamblada, NdisAllocateReassembledNetBufferList omite el número de bytes especificados en el parámetro StartOffset en cada una de las estructuras de NET_BUFFER primarias. NdisAllocateReassembledNetBufferList concatena los datos restantes de cada estructura NET_BUFFER primaria en la cadena MDL de una estructura NET_BUFFER ensamblada. NdisAllocateReassembledNetBufferList se retira (aumenta el espacio de datos usado en) la estructura NET_BUFFER ensamblada por la cantidad especificada en DataOffsetDelta .

Los controladores NDIS llaman a la función NdisFreeReassembledNetBufferList para liberar una estructura de NET_BUFFER_LIST ensamblada y la estructura de NET_BUFFER asociada y la cadena MDL.

Estructuras de NET_BUFFER_LIST derivadas