Compartir a través de


estructura NET_BUFFER_LIST_CONTEXT (ndis/nbl.h)

La estructura NET_BUFFER_LIST_CONTEXT almacena información de contexto de una estructura 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 especifica también el tamaño en bytes del espacio de contexto no utilizado 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.

Observaciones

Cada estructura 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 acomodar 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 estructuras de NET_BUFFER_LIST. Para asignar previamente este espacio de datos, un controlador llama a . 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 ahorra NDIS a la asignación de 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 de indica también el desplazamiento desde el principio del miembro contextData al inicio del espacio de datos de contexto usado.

Los controladores NDIS llaman al función NdisAllocateNetBufferListContext para asignar espacio de búfer contiguo en la estructura de 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 al función NdisFreeNetBufferListContext para liberar el espacio del búfer.

Uso de NET_BUFFER_LIST_CONTEXT_DATA_SIZE macro para obtener el tamaño del espacio de contexto usado. Uso de 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 NET_BUFFER Arquitectura.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
encabezado de 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