NET_RING structure (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’octets 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 quel usage.
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 seul thread. Un NET_RING contient des éléments NET_PACKET ou NET_FRAGMENT .
Pour plus d’informations sur les tampons d’anneau de paquets et de fragments, consultez Extensions et descripteurs de paquets.
Pour plus d’informations sur l’utilisation des anneaux réseau, consultez Présentation des anneaux de réseau.
Configuration requise
Condition requise | Valeur |
---|---|
Version KMDF minimale | 1.29 |
Version UMDF minimale | 2,33 |
En-tête | ring.h |