NET_BUFFER_LIST_CONTEXT estructura (ndis/nbl.h)

La estructura NET_BUFFER_LIST_CONTEXT almacena información de contexto para una estructura de NET_BUFFER_LIST .

Sintaxis

typedef struct _NET_BUFFER_LIST_CONTEXT {
  NET_BUFFER_LIST_CONTEXT *Next;
  USHORT                  Size;
  USHORT                  Offset;
  UCHAR                   ContextData[];
} NET_BUFFER_LIST_CONTEXT, *PNET_BUFFER_LIST_CONTEXT;

Miembros

Next

Puntero a la siguiente estructura de NET_BUFFER_LIST_CONTEXT en una lista vinculada de estructuras de NET_BUFFER_LIST_CONTEXT.

Size

Tamaño, en bytes, de todo el espacio de contexto de la estructura NET_BUFFER_LIST_CONTEXT, incluido el espacio de contexto usado y sin usar.

Offset

Desplazamiento, en bytes, desde el principio del búfer de datos de contexto hasta el inicio de los datos de contexto en la estructura NET_BUFFER_LIST_CONTEXT. El miembro Offset también especifica el tamaño en bytes del espacio de contexto sin usar en la estructura NET_BUFFER_LIST_CONTEXT.

ContextData

Búfer de datos de contexto. Los datos de contexto pueden incluir cualquier información que requiera un controlador.

Comentarios

Cada estructura de NET_BUFFER_LIST puede incluir una estructura de NET_BUFFER_LIST_CONTEXT preasignada. A medida que una estructura de NET_BUFFER_LIST viaja por la pila de controladores, la lista vinculada de estructuras de NET_BUFFER_LIST_CONTEXT puede expandirse para dar cabida a espacio de datos adicional para cada controlador.

Los controladores deben usar las siguientes macros y funciones NDIS para acceder y manipular miembros en una estructura de NET_BUFFER_LIST_CONTEXT:

El miembro ContextData de la estructura NET_BUFFER_LIST_CONTEXT especifica la parte de datos de la estructura NET_BUFFER_LIST_CONTEXT. Para mejorar el rendimiento del sistema, un controlador debe asignar previamente cualquier espacio de datos de contexto necesario cuando el controlador asigna un grupo de estructura de NET_BUFFER_LIST. Para asignar previamente este espacio de datos, un controlador llama al La función NdisAllocateNetBufferListPool y, a continuación, especifica la cantidad de espacio de datos necesario en el parámetro ContextSize . La asignación previa de este espacio de datos evita que NDIS asigne memoria en las rutas de acceso de recepción y envío.
Nota NDIS calcula el espacio de datos de contexto necesario y, si es necesario, ajusta el espacio de datos asignado para cumplir los requisitos de toda la pila de controladores.
 
El miembro Offset especifica la cantidad de espacio de contexto sin usar en la estructura NET_BUFFER_LIST_CONTEXT. El miembro Offset también indica el desplazamiento desde el principio del miembro ContextData hasta el inicio del espacio de datos de contexto utilizado.

Los controladores NDIS llaman a Función NdisAllocateNetBufferListContext para asignar espacio de búfer contiguo en la estructura NET_BUFFER_LIST_CONTEXT. Si es necesario, NDIS asigna una nueva estructura de NET_BUFFER_LIST_CONTEXT con espacio adicional para respetar la solicitud. Los controladores NDIS llaman a Función NdisFreeNetBufferListContext para liberar el espacio del búfer.

Use el NET_BUFFER_LIST_CONTEXT_DATA_SIZE macro para obtener el tamaño del espacio de contexto utilizado. Use el NET_BUFFER_LIST_CONTEXT_DATA_START macro para obtener la dirección inicial del espacio de contexto usado.

Para obtener más información sobre cómo usar búferes netos, consulte arquitectura de NET_BUFFER.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Encabezado ndis/nbl.h (include ndis.h)

Consulte también

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT_DATA_SIZE NET_BUFFER_LIST_CONTEXT_DATA_START NdisAllocateNetBufferListContext NdisAllocateNetBufferListPool

NdisFreeNetBufferListContext