structure NET_RING (ring.h)
Spécifie une mémoire tampon composée d’une ou plusieurs structures NET_PACKET ou NET_FRAGMENT.
Syntaxe
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;
Membres
OSReserved1
Réservé. Les pilotes clients ne doivent pas lire ou écrire dans cette valeur.
ElementStride
Décalage d’octet en lecture seule entre le début d’un élément et le début de l’élément suivant. Utilisez ((BYTE*)p + ElementStride)
pour obtenir l’adresse de l’élément suivant.
NumberOfElements
Valeur en lecture seule qui indique le nombre de paquets dans la mémoire tampon en anneau, qui est toujours une puissance de deux et supérieure à une.
ElementIndexMask
Masque UINT32 en lecture seule qui peut être utilisé pour limiter efficacement un index à [0, NumberOfElements). Le client peut utiliser cette valeur pour calculer un index qui entoure la mémoire tampon en anneau. Utilisez l’identité (x % NumberofElements) == (x & ElementIndexMask)
.
EndIndex
Spécifie l’index en lecture seule du dernier élément appartenant au pilote client dans la plage inclusive [0, NumberOfElements - 1].
DUMMYUNIONNAME
Union qui contient les membres OSReserved0 et OSReserved2.
DUMMYUNIONNAME.OSReserved0
Réservé. Les pilotes clients ne doivent pas lire ou écrire dans cette valeur.
DUMMYUNIONNAME.OSReserved2[4]
Réservé. Les pilotes clients ne doivent pas lire ou écrire dans cette valeur.
BeginIndex
Spécifie l’index du premier élément appartenant au pilote client dans la plage inclusive [0, NumberOfElements - 1].
NextIndex
Spécifie l’index de l’élément suivant qui a besoin de traitement. Pour une utilisation facultative par le pilote client.
Scratch
Pointeur vers une mémoire tampon que le pilote client peut utiliser à tout usage.
Buffer[ANYSIZE_ARRAY]
Tableau d’octets qui contient les éléments de l’anneau net. En règle générale, un pilote client appelle NetRingGetPacketAtIndex ou NetRingGetFragmentAtIndex pour accéder aux éléments de la mémoire tampon en anneau.
Remarques
La structure NET_RING est une mémoire tampon d’anneau générique, optimisée pour un accès efficace à partir d’un seul thread. Un NET_RING contient des éléments NET_PACKET ou NET_FRAGMENT.
Pour plus d’informations sur les mémoires tampons d’anneau de paquets et de fragments, consultez descripteurs et extensions de paquets.
Pour plus d’informations sur l’utilisation des anneaux nets, consultez Présentation des anneaux nets.
Exigences
Exigence | Valeur |
---|---|
version minimale de KMDF | 1.29 |
version minimale de UMDF | 2.33 |
d’en-tête | ring.h |