Compartir a través de


Administración del Buffer del Controlador de Protocolo

Un controlador de protocolo debe administrar los grupos de estructuras NET_BUFFER_LIST y NET_BUFFER para las operaciones de envío. Para crear estos grupos, los controladores llaman a las funciones siguientes:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Los controladores de protocolo pueden usar las siguientes funciones para asignar estructuras de los pools:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

Llamar a NdisAllocateNetBufferAndNetBufferList es más eficaz que llamar a NdisAllocateNetBufferList seguido de NdisAllocateNetBuffer. Sin embargo, NdisAllocateNetBufferAndNetBufferList solo crea una estructura NET_BUFFER en la estructura NET_BUFFER_LIST. Para usar NdisAllocateNetBufferAndNetBufferList, el controlador debe establecer el parámetro AllocateNetBuffer en TRUE cuando llama a NdisAllocateNetBufferListPool.

Los controladores de protocolo pueden usar solicitudes OID para consultar los requisitos de espacio para retroalimentación y de contexto de los controladores subyacentes. Un controlador de protocolo debe determinar los requisitos de back-fill y de contexto para una asociación en los estados de apertura o reinicio. El controlador debe asignar suficiente espacio de contexto y respaldo para toda la pila. Si es necesario, un controlador de protocolo puede liberar los grupos y reasignarlos en el estado Reinicio .

Los controladores de protocolo usan las siguientes funciones para liberar los grupos:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool.

Los controladores de protocolo usan las siguientes funciones para liberar las estructuras asignadas desde los grupos:

NdisFreeNetBufferList

NdisFreeNetBuffer

Los controladores deben liberar las estructuras de NET_BUFFER asignadas con NdisAllocateNetBuffer antes de liberar la estructura asociada de NET_BUFFER_LIST. Las estructuras NET_BUFFER asignadas con NdisAllocateNetBufferAndNetBufferList se liberan cuando el controlador llama a NdisFreeNetBufferList para la estructura NET_BUFFER_LIST asociada.