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 du début d’un élément au début du 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 à un.
ElementIndexMask
Masque UINT32 en lecture seule qui peut être utilisé pour fixer efficacement un index à [0, NumberOfElements). Le client peut utiliser cette valeur pour calculer un index qui encapsule 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 doit être traité. Pour une utilisation facultative par le pilote client.
Scratch
Pointeur vers une mémoire tampon que le pilote client peut utiliser à n’importe quelle fin.
Buffer[ANYSIZE_ARRAY]
Tableau d’octets qui contient les éléments dans 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 en anneau générique, optimisée pour un accès efficace à partir d’un thread unique. Un NET_RING contient des éléments NET_PACKET ou NET_FRAGMENT .
Pour plus d’informations sur les tampons en 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.
Configuration requise
Condition requise | Valeur |
---|---|
Version KMDF minimale | 1.29 |
En-tête | ring.h |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour