Compartir a través de


Administración del búfer del controlador de protocolo

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

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

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

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 de contexto y relleno de retroceso de los controladores subyacentes. Un controlador de protocolo debe determinar los requisitos de relleno y contexto para un enlace en los estados De apertura o reinicio . El controlador debe asignar suficiente relleno atrás y espacio de contexto 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 NET_BUFFER estructuras asignadas con NdisAllocateNetBuffer antes de liberar la estructura de NET_BUFFER_LIST asociada. NET_BUFFER estructuras asignadas con NdisAllocateNetBufferAndNetBufferList se liberan cuando el controlador llama a NdisFreeNetBufferList para la estructura de NET_BUFFER_LIST asociada.