estructura de NET_RING (ring.h)
Especifica un búfer formado por una o varias estructuras de NET_PACKET o NET_FRAGMENT .
Sintaxis
typedef struct _NET_RING {
UINT16 OSReserved1;
UINT16 ElementStride;
UINT32 NumberOfElements;
UINT32 ElementIndexMask;
UINT32 EndIndex;
union {
UINT32 OSReserved0;
void *OSReserved2[4];
} DUMMYUNIONNAME;
UINT32 BeginIndex;
UINT32 NextIndex;
void *Scratch;
unsigned char Buffer[ANYSIZE_ARRAY];
} NET_RING;
Miembros
OSReserved1
Reservado. Los controladores de cliente no deben leer ni escribir en este valor.
ElementStride
Desplazamiento de bytes de solo lectura desde el inicio de un elemento hasta el inicio del siguiente. Use ((BYTE*)p + ElementStride)
para obtener la dirección del siguiente elemento.
NumberOfElements
Valor de solo lectura que indica el número de paquetes en el búfer de anillo, que siempre es una potencia de dos y mayor que uno.
ElementIndexMask
Máscara UINT32 de solo lectura que se puede usar para sujetar eficazmente un índice a [0, NumberOfElements]. El cliente puede usar este valor para calcular un índice que se ajusta alrededor del búfer de anillo. Use la identidad (x % NumberofElements) == (x & ElementIndexMask)
.
EndIndex
Especifica el índice de solo lectura del último elemento que pertenece al controlador de cliente en el intervalo inclusivo [0, NumberOfElements - 1].
DUMMYUNIONNAME
Unión que contiene los miembros OSReserved0 y OSReserved2 .
DUMMYUNIONNAME.OSReserved0
Reservado. Los controladores de cliente no deben leer ni escribir en este valor.
DUMMYUNIONNAME.OSReserved2[4]
Reservado. Los controladores de cliente no deben leer ni escribir en este valor.
BeginIndex
Especifica el índice del primer elemento que pertenece al controlador de cliente en el intervalo inclusivo [0, NumberOfElements - 1].
NextIndex
Especifica el índice del siguiente elemento que necesita procesamiento. Para el uso opcional del controlador de cliente.
Scratch
Puntero a un búfer que el controlador cliente puede usar para cualquier propósito.
Buffer[ANYSIZE_ARRAY]
Matriz de bytes que contiene los elementos del anillo neto. Normalmente, un controlador de cliente llama a NetRingGetPacketAtIndex o NetRingGetFragmentAtIndex para acceder a los elementos del búfer de anillo.
Comentarios
La estructura NET_RING es un búfer de anillo genérico, optimizado para un acceso eficaz desde un único subproceso. Un NET_RING contiene elementos NET_PACKET o NET_FRAGMENT .
Para obtener más información sobre los búferes de anillo de fragmentos y paquetes, consulta Descriptores de paquetes y extensiones.
Para obtener más información sobre el uso de anillos netos, consulta Introducción a los anillos netos.
Requisitos
Requisito | Value |
---|---|
Versión mínima de KMDF | 1.29 |
Versión mínima de UMDF | 2,33 |
Encabezado | ring.h |