struttura NET_RING (ring.h)
Specifica un buffer costituito da una o più strutture NET_PACKET o NET_FRAGMENT .
Sintassi
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;
Members
OSReserved1
Riservato. I driver client non devono leggere o scrivere in questo valore.
ElementStride
Offset di byte di sola lettura dall'inizio di un elemento all'inizio del successivo. Utilizzare ((BYTE*)p + ElementStride)
per ottenere l'indirizzo dell'elemento successivo.
NumberOfElements
Valore di sola lettura che indica il numero di pacchetti nel buffer circolare, che è sempre una potenza di due e maggiore di uno.
ElementIndexMask
Maschera UINT32 di sola lettura che può essere utilizzata per bloccare in modo efficiente un indice a [0, NumberOfElements). Il client può usare questo valore per calcolare un indice che esegue il wrapping intorno al buffer circolare. Usare l'identità (x % NumberofElements) == (x & ElementIndexMask)
.
EndIndex
Specifica l'indice di sola lettura dell'ultimo elemento di proprietà del driver client nell'intervallo inclusivo [0, NumberOfElements - 1].
DUMMYUNIONNAME
Unione che contiene i membri OSReserved0 e OSReserved2 .
DUMMYUNIONNAME.OSReserved0
Riservato. I driver client non devono leggere o scrivere in questo valore.
DUMMYUNIONNAME.OSReserved2[4]
Riservato. I driver client non devono leggere o scrivere in questo valore.
BeginIndex
Specifica l'indice del primo elemento di proprietà del driver client nell'intervallo inclusivo [0, NumberOfElements - 1].
NextIndex
Specifica l'indice dell'elemento successivo che richiede l'elaborazione. Per l'uso facoltativo da parte del driver client.
Scratch
Puntatore a un buffer che il driver client può usare per qualsiasi scopo.
Buffer[ANYSIZE_ARRAY]
Matrice di byte che contiene gli elementi nell'anello di rete. In genere, un driver client chiama NetRingGetPacketAtIndex o NetRingGetFragmentAtIndex per accedere agli elementi del buffer circolare.
Commenti
La struttura NET_RING è un buffer circolare generico, ottimizzato per l'accesso efficiente da un singolo thread. Un NET_RING contiene elementi NET_PACKET o NET_FRAGMENT .
Per altre info sui buffer circolari di pacchetti e frammenti, vedi Descrittori di pacchetti ed estensioni.
Per altre info sull'uso degli anelli di rete, vedi Introduzione agli anelli di rete.
Requisiti
Requisito | Valore |
---|---|
Versione KMDF minima | 1.29 |
Versione UMDF minima | 2.33 |
Intestazione | ring.h |