Compartir a través de


Administración del búfer del controlador de filtro

Los controladores de filtro crean búferes para copiar los datos de red obtenidos de otros controladores, o para iniciar operaciones de envío o recepción.

Si un controlador de filtro no crea búferes, el controlador no administra grupos de búferes. Este controlador simplemente pasa los búferes que recibe de otros controladores.

Un controlador de filtro que crea búferes para admitir operaciones de envío o recepción debe administrar NET_BUFFER_LIST grupos de estructuras y NET_BUFFER grupos de estructuras.

Para crear estos grupos, los controladores llaman a las funciones siguientes:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Los controladores de filtro 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 filtro que originan solicitudes de envío deben determinar los requisitos de contexto y espacio de reposición de los controladores subyacentes. Los controladores de filtro usan atributos de reinicio para determinar los requisitos de reposición de los controladores subyacentes. Un controlador de filtro debe determinar los requisitos de reposición y contexto en el estado Reinicio . El controlador debe asignar suficiente espacio de reposición y contexto para toda la pila. Si es necesario, un controlador de filtro puede liberar los grupos y reasignarlos en el estado Reinicio .

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

NdisFreeNetBufferListPool

NdisFreeNetBufferPool

Los controladores de filtro 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.